【问题标题】:JSON Expectations for Ember Data Polymorphic RelationshipsEmber 数据多态关系的 JSON 期望
【发布时间】:2015-06-05 17:41:17
【问题描述】:
DEBUG:               Ember                     : 1.8.1
ember.js:15373DEBUG: Ember Data                : 1.0.0-beta.18
ember.js:15373DEBUG: Handlebars                : 1.3.0
ember.js:15373DEBUG: jQuery                    : 1.11.3

所以我有一个“请求”模型,它可以依赖于一个帐户或其他代表并在完成时代表帐户的请求。

我对如何让 JSON 正确以便 Ember 获取它感到有点困惑。

在服务器端,ActiveModelSeriailzers 似乎想要像这样序列化多态关系:

{
  "id" : 1,
  "account_id" : { "id": 1, "type": "account"}
}

我有以下 ED 模型:

// abstract-account.js
export default DS.Model.extend();

//account.js
export default AbstractAccount.extend();

//request.js
export default DS.Model.extend({
  account: DS.belongsTo('abstractAccount', { polymorphic: true} )
});

当我尝试使用默认 json 加载记录时,我得到了

Error: Assertion Failed: You must include an `id` for account in an object passed to `push`

在我的阅读中,我得到的印象是,belongsTo 多态关联应该像这样发送:

{
  "id" : 1,
  "account_id" : 1,
  "account_type" : "Account"
}

如果我将服务器更改为这样的序列化,我会得到 ​​p>

Uncaught Error: Assertion Failed: You may not pass `null` as id to the store's find method

我不确定我缺少什么,或者当前推荐的做法是什么。

【问题讨论】:

    标签: json ember-data polymorphic-associations


    【解决方案1】:

    我正在使用与第一个约定类似的设置。请记住,Ember 期望 JSON 对象在类名下命名空间,因此对于 /requests 的 GET 您需要返回类似

    {
        'requests': [
            {
              'id': 1,
              'account': { id: 10, type: 'account' }
            },
            {
              'id': 2,
              'account': { id: 20, type: 'some_other_abstract_account' }
            }
        ]
    }
    

    这是在 application/adapter.js 中声明的 RESTAdapter,我没有尝试过 ActiveModelAdapter。我看过建议 another convention 的文件,但它对我使用 ember 数据 1.0.0-beta.16 有效

    【讨论】:

    • 当我做了两件事时,我得到了它的工作:1.阻止另一个序列化程序发送太多的侧载记录,这弄乱了我的新动作的魔力,2.停止使用 AMS 多态关系并构建 json就像你自己发布的一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多