首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Record数据:允许嵌入式ID用于记录

Record数据:允许嵌入式ID用于记录
EN

Stack Overflow用户
提问于 2014-09-27 22:31:32
回答 1查看 1.9K关注 0票数 1

在使用RESTAdapter时,我有一个要嵌入响应中的Organization模型。Ember.RESTAddapter的默认实现似乎使用相同的模型名称发送id,但不作为对象发送(当前的“工作”):

POST/PUT api/v1/item/{id}

代码语言:javascript
复制
{
    "item" {
        id: "1029383829"
        ...
        organization: "26044097612186763401268824297"
    }
}

我查阅了文档,发现mixin DS.EmbeddedRecordsMixin应该这样做,同时在attrsSerializer上声明embedded: "always"

模型/item.js

代码语言:javascript
复制
var Item = DS.Model.extend({
    ...,
    organization: DS.belongsTo("organization", {embedded: "always"})
});

序列化程序/item.js

代码语言:javascript
复制
var ItemSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
        attrs: {
            organisation: {serialize: "id", embedded: "always"}
        }
    }
);

但是,在反序列化记录时,Ember Data会抱怨说它需要一个对象,但只是得到了一个字符串:

断言失败:在调用app@model:organization:,预期对象为data,但为260440976121863401268824297

最后,我更喜欢一个类似于sideloading,的系统,其中一个附加属性,post固定的"_id",描述了嵌入式记录的相应id

代码语言:javascript
复制
{
    "item": {
        id: 1,
        name: "name",
        organization_id: "26044097612186763401268824297"
        ...
    }
}

如何允许对我的id模型进行序列化和反序列化嵌入式Organization旁瓣处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-27 22:48:08

实际上不是嵌入记录,而是指定id,在这种情况下,应该将其标记为异步。

代码语言:javascript
复制
var Item = DS.Model.extend({
    ...,
    organization: DS.belongsTo("organization", {async: true})
});

并删除嵌入的记录实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26079799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档