我有一个emberjs应用程序支持nodejs服务器和mongodb。目前我的数据库正在发送带有'_id'字段的文档。我有followign代码强制灰烬到治疗“_id”作为主键:序列化ids当保存emberjs模型
App.ApplicationSerializer = DS.RESTSerializer.extend({
primaryKey: '_id'
});
在另一方面,我有一个“的hasMany”的关系有关这样两种型号:
App.Player = DS.Model.extend({
name: DS.attr('string'),
thumbLink: DS.attr('string'),
activeGame: DS.belongsTo('game', { async: true }),
email: DS.attr('string'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
admin: DS.attr('boolean')
});
App.Game = DS.Model.extend({
name: DS.attr('string'),
active: DS.attr('boolean'),
players: DS.hasMany('player', { async: true })
});
的问题是,当我尝试保存模型(this.get('model').save()
)我的控制器上的ID是没有序列号,结果是余烬发送以下内容:
{"game":{"name":"Indie/Rock","active":false,"players":[],"_id":"53cbbf43daa978983ee0b101"}}
正如你所看到的玩家阵列是空,结果,服务器正在保存那个实际上是不正确的空数组。我知道可以在模型上使用{ embedded: true }
,并从服务器返回带有嵌入文档的模型,但我想保留异步功能。
我试图从EmbeddedRecordsMixing
延长游戏串行如下所示:
App.GameSerializer = DS.ActiveModelSerializer
.extend(DS.EmbeddedRecordsMixin)
.extend({
attrs: {
players: {serialize: 'ids', deserialize: 'ids'},
}
});
但是,当我这样做,我从灰烬,即使ApplicationSerializer得到了以下错误suppossedly告诉灰烬用户_id作为主键:
Assertion Failed: Error: Assertion Failed: You must include an `id` for App.Game in a hash passed to `push`
我的问题是,如果有可能维持异步余烬数据同时功能能够序列化该文档,其关系为ID,并使用_id作为主键。
谢谢。
在http://stackoverflow.com/questions/24125334/ember-js-quiz-questions-save-delete-hasmany-data/24130793#24130793也提到 – Kingpin2k