我有以下型号:
App.Publication = DS.Model.extend({
title: DS.attr('string'),
bodytext: DS.attr('string'),
author: DS.belongsTo('author')
});
App.Author = DS.Model.extend({
name: DS.attr('string')
});
以及以下 json 数据:
{
"publications": [
{
id: '1',
title: 'first title',
bodytext: 'first body',
author_id: 100
},
{
id: '2',
title: 'second title',
bodytext: 'second post',
author_id: 200
}
];
}
在 Ember Data RC12 中,此方法有效(您可以在 json 中指定 author_id 或作者,并且出版物将始终链接正确的作者)。
在 Ember Data 1.0.0 中,这不再有效;作者始终为空。
在一些文档中我发现——因为我在 json 数据中使用“author_id”(而不仅仅是作者)——我需要在模型中指定键;因此:
author: DS.belongsTo('author', { key: 'author_id' })
然而,这不起作用;出版物中的作者仍然为空。
我现在看到的唯一解决方案是实现自定义序列化程序并将 author_id 覆盖为作者(通过 normailzeId);我无法更改我的后端数据结构......因此:
App.MySerializer = DS.RESTSerializer.extend({
//Custom serializer used for all models
normalizeId: function (hash) {
hash.author = hash.author_id;
delete hash.author_id;
return hash;
}
});
以上是正确的方法吗?