在使用RESTAdapter时,我有一个要嵌入响应中的Organization模型。Ember.RESTAddapter的默认实现似乎使用相同的模型名称发送id,但不作为对象发送(当前的“工作”):
POST/PUT api/v1/item/{id}
{
"item" {
id: "1029383829"
...
organization: "26044097612186763401268824297"
}
}我查阅了文档,发现mixin DS.EmbeddedRecordsMixin应该这样做,同时在attrs或Serializer上声明embedded: "always"。
模型/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会抱怨说它需要一个对象,但只是得到了一个字符串:
断言失败:在调用app@model:organization:,预期对象为
data,但为260440976121863401268824297
最后,我更喜欢一个类似于sideloading,的系统,其中一个附加属性,post固定的"_id",描述了嵌入式记录的相应id:
{
"item": {
id: 1,
name: "name",
organization_id: "26044097612186763401268824297"
...
}
}如何允许对我的id模型进行序列化和反序列化嵌入式Organization旁瓣处理?
发布于 2014-09-27 22:48:08
实际上不是嵌入记录,而是指定id,在这种情况下,应该将其标记为异步。
var Item = DS.Model.extend({
...,
organization: DS.belongsTo("organization", {async: true})
});并删除嵌入的记录实现。
https://stackoverflow.com/questions/26079799
复制相似问题