我有一个奇怪的问题,我需要结合两个概念。单独使用时,这些技术可以合并使用。基本上,当我尝试将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})
});
我怎样才能吃蛋糕呢?
答案 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);
}
});