JSON对Ember数据多态关系的期望

时间:2015-06-04 17:54:58

标签: json ember-data polymorphic-associations

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

所以我有一个“请求”模型,它可以依赖于一个帐户或其他请求代表它们并在帐户满足时进行帐户。

我对如何让Jmber正确选择JSON有点困惑。

在服务器端,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"
}

如果我将服务器更改为序列化,我会改为

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

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

1 个答案:

答案 0 :(得分:1)

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

的内容。
{
    '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