Ember.js 转换为BelongsTo

Ember.js 转换为BelongsTo,ember.js,ember-data,Ember.js,Ember Data,我想知道是否有可能为belongsTo(扩展hasMany)创建一个转换,因为我的REST服务器返回如下定义的关系: import DS from 'ember-data'; export default DS.Model.extend({ lastname: DS.attr('string'), firstname: DS.attr('string'), company: DS.belongsTo('company'), }); [ { "firstna

我想知道是否有可能为belongsTo(扩展hasMany)创建一个转换,因为我的REST服务器返回如下定义的关系:

import DS from 'ember-data';

export default DS.Model.extend({
  lastname: DS.attr('string'),
  firstname: DS.attr('string'),
  company: DS.belongsTo('company'),
});
[
    {
        "firstname": "John",
        "lastname": "Doe",
        "company": "5"
    }
]
这样:

[
    {
        "firstname": "John",
        "lastname": "Doe",
        "company": {
            "uri": "<snip>/api/rest/company/5",
            "id": "5",
            "resource": "company"
        }
    }
]

对于Ember Data 1.13,假设您获取的是单个模型,那么您将覆盖应用程序序列化程序中的
normalizeFindRecordResponse

// serializers/application.js
normalizeFindRecordResponse: function(store, primaryModelClass, payload) {

   var record = { id: payload.id, type: primaryModelClass.modelName };
   record.relationships = {};

   Object.keys(payload).forEach(function(key) {
     if (payload[key].id) { // it's an object with an id -> relationship
       record.relationships[key] = { data: { id: payload[key].id, type: key } };
     } else { // it's an attribute
       record.attributes[key] = payload[key];
     }
   })

   return { data: record };

}

这就是Ember Data 2.0的发展方向:根据需要调整传入的服务器数据。

您可能可以使用的不是真正嵌入的数据,而是对象中的Id。除了idOkay之外,我还必须手动更正所有关系(在本例中,我只有一个关系,但还有很多关系),问题是我的rest api对所有关系的响应方式都是相同的,我希望以一种通用的方式来处理它,对于BelongTo Relationship,使其成为应用程序序列化程序,并使用提供的参数使其成为泛型?aces,我将在本周晚些时候试用它,并将您的答案标记为正确(如果有效),但首先我需要查看新的序列化程序函数,因为当前的extractHooks已被弃用。@emberigniter,您是否有记录迁移到JSON-API的资源?也许是RFC?我找不到它,我真的很感兴趣。@xavier.cambar并没有真正记录这一移动,但我写了关于最新的余烬数据的序列化程序/适配器