假设我想开发一个处理实体历史的功能。在获取历史条目时,每个历史条目都可以绑定到应用程序模型实体。
为避免创建通用历史模型并扩展应用程序中的所有模型,我怎样才能实现多态?
//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"}}
}
}
]
}
答案 0 :(得分:1)
你必须使用一个共同的基础模型!没有,我不认为这是可能的。
您可以尝试直接使用DS.Model
。也许您可以DS.Model
export default DS.Model;
extend
导出文件base.js
中没有belongsTo('base', ...)
,然后使用{{1}}
但我还没试过这个。如果有效的话,看起来像一个丑陋的黑客。