我开始研究嵌入式记录mixin,用hasMany /属于关系序列化/反序列化记录。
型号:
App.Post= DS.Model.extend({
comment: DS.belongsTo('comment'),
name: DS.attr('string')
});
App.Comment =DS.Model.extend({
post: DS.belongsTo('Post'),
value: DS.attr('string')
});
串行:
App.PostSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
comments: {embedded: 'always'}
}
});
当我尝试保存模型时,我收到以下错误。
var model = this.store.createRecord('post');
model.get('comments').pushObject(this.store.createRecord('comment'));
model.setProperties({
name: 'test'
});
model.save();
错误:断言失败:您必须在传递给push的对象中包含App.Comment的ID。只有浏览器控制台中的错误,但后端的数据,数据按预期进行。
所以,我开始寻找解决方法,并在https://gist.github.com/vampolo/8f8237cce2b8a52ab9d4中找到了一些有趣的东西。
来源:http://vincenzo-ampolo.net/2014/09/21/ember-data-embedded-records-without-ids-ready-to-go/
在关注该链接后,我按如下方式更改了序列化程序。
Serializer(已更改):
App.PostSerializer=DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,DS.NoKeyMixin, {
attrs: {
comments: {embedded: 'always',noKey: true}
}
});
但是当我现在保存模型时,我得到了飞行错误。
未捕获的TypeError:embeddedRecord.serialize不是函数。
我坚持这个并寻求帮助。提前谢谢。