如何在Ember Data中将primaryKey修改与belongsTo结合使用

时间:2015-06-18 21:07:43

标签: ember.js ember-data

我有一个奇怪的问题,我需要结合两个概念。单独使用时,这些技术可以合并使用。基本上,当我尝试将primaryKey输入到自定义序列化程序中时,取决于主键的belongsTo关系会失败。

考虑一下 JSBin 这证明了这个问题。

我的API没有在有效负载中返回ID,因此我使用自定义序列化程序指向正确的primaryKey。

App.ContactSerializer = DS.RESTSerializer.extend({
    primaryKey: 'user_id'
});

但这打破了我在模型中定义的现有关系。

App.Contact = DS.Model.extend({
  email: DS.attr('string'),
  user: DS.belongsTo('user', {async: true})
});

我怎样才能吃蛋糕呢?

JSBin Demo

1 个答案:

答案 0 :(得分:0)

经过大量的谷歌搜索后,我想出了一个看似可行的解决方案:

Revised JSBin Example 基本上,我可以使用Serializer中的Normalize函数从我的API提供的非标准值中添加已检测到的ID值。

// Match serializer to adapter...(ActiveModel)
// use normalize to slip in an id from API
App.ContactSerializer = DS.ActiveModelSerializer.extend({
    normalize: function(typeClass, hash, prop) {
        hash.id = hash.user_id;
        return this._super(typeClass, hash, prop);
    }
});