使用RESTAdapter
时,我有一个Organization
模型,该模型将嵌入到响应中。 Ember.RESTAddapter
的默认实现似乎使用相同的模型名称发送id
,但不是作为对象发送(目前这'工作'):
POST / PUT api / v1 / item / {id}
{
"item" {
id: "1029383829"
...
organization: "26044097612186763401268824297"
}
}
我查阅了文档,发现mixin DS.EmbeddedRecordsMixin
应该执行此操作,并在embedded: "always"
或attrs
上声明Serializer
:
模型/ item.js
var Item = DS.Model.extend({
...,
organization: DS.belongsTo("organization", {embedded: "always"})
});
串行器/ item.js :
var ItemSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
organisation: {serialize: "id", embedded: "always"}
}
}
);
然而,当反序列化记录时,Ember Data抱怨说它预期有一个对象,但只是得到了一个字符串:
断言失败:在推送的调用中预期对象为
data
app @ model:organization:,但是是26044097612186763401268824297
最终,我更喜欢一个系统,比如 sideloading ,其中一个附加属性,post-fixed" _id",描述了嵌入式的相应id
记录:
{
"item": {
id: 1,
name: "name",
organization_id: "26044097612186763401268824297"
...
}
}
如何为id
模型允许序列化和反序列化嵌入式Organization
边加载?
答案 0 :(得分:1)
你实际上并没有嵌入记录,你只是指定了id,在这种情况下你应该把它标记为异步。
var Item = DS.Model.extend({
...,
organization: DS.belongsTo("organization", {async: true})
});
删除嵌入式记录实施。