加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ember-data和MongoDB,如何处理_id

发布时间:2020-12-16 22:36:53 所属栏目:百科 来源:网络整理
导读:我正在使用带有rails和MongoDB的ember-data,并且在_id字段中存在MongoDB中的ID存在问题. Ember数据将使用ID作为ID的默认字段,因此我尝试重写它,如下所示: App.User = DS.Model.extend primaryKey: "_id" name: DS.attr "string" image: DS.attr "string" 这
我正在使用带有rails和MongoDB的ember-data,并且在_id字段中存在MongoDB中的ID存在问题.

Ember数据将使用ID作为ID的默认字段,因此我尝试重写它,如下所示:

App.User = DS.Model.extend
    primaryKey: "_id"
    name: DS.attr "string"
    image: DS.attr "string"

这似乎在大部分时间都可以工作,但在某些情况下,我从Ember中得到例外:

Uncaught Error: assertion failed: Your server returned a hash with the
key _id but you have no mappings

我怀疑这可能是垃圾数据中的一个错误,因为它仍然在开发中,但是我试图找到一种方法来在服务器端映射_id到id?我正在使用mongoid来做mongo映射.

解决方法

如果你在这里使用Mongoid,那就是一个解决方案,使得你不必添加一个方法def id; object._id.to_s;结束到每个序列化器

添加以下Rails初始化程序

Mongoid 3.x

module Moped
  module BSON
    class ObjectId
      alias :to_json :to_s
      alias :as_json :to_s
    end
  end
end

蒙古4

module BSON
  class ObjectId
    alias :to_json :to_s
    alias :as_json :to_s
  end
end

活动模型序列化程序

class BuildingSerializer < ActiveModel::Serializer
  attributes :id,:name
end

产生的JSON

{
  "buildings": [
    {"id":"5338f70741727450f8000000","name":"City Hall"},{"id":"5338f70741727450f8010000","name":"Firestation"}
  ]
}

这是brentkirby建议的猴子补丁,并在arthurnn之前更新了Mongoid 4

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读