Ember数据 - 与任何类型

时间:2016-04-16 10:39:12

标签: ember.js polymorphism ember-data

假设我想开发一个处理实体历史的功能。在获取历史条目时,每个历史条目都可以绑定到应用程序模型实体。

为避免创建通用历史模型并扩展应用程序中的所有模型,我怎样才能实现多态?

//models/historicentry
export default DS.Model.extend({
    entity:DS.belongsTo('????', {polymorphic:true})
    ...
});

//models/post
export default DS.Model.extend({
...
}}

//models/comment
export default DS.Model.extend({
...
}}

在这个例子中,如何允许帖子或评论成为historyentry模型中实体关系的关联类型,而不是重构帖子和评论模型?

使用JSONAPI,获取历史记录的请求是

//GET /historic
{
    "data":[
        {
            "type":"historics",
            "id":1,
            "attributes":{ ... }
            "relationships":{
                 "entity":{"data":{"id":1, "type":"posts"}}
            }
        },
        {
            "type":"historics",
            "id":1,
            "attributes":{ ... }
            "relationships":{
                 "entity":{"data":{"id":1, "type":"comments"}}
            }
        }
    ]
} 

1 个答案:

答案 0 :(得分:1)

你必须使用一个共同的基础模型!没有,我不认为这是可能的。

您可以尝试直接使用DS.Model。也许您可以DS.Model export default DS.Model; extend导出文件base.js中没有belongsTo('base', ...),然后使用{{1}} 但我还没试过这个。如果有效的话,看起来像一个丑陋的黑客。