我正在使用Ember的RESTAdapter并且具有非常标准的多态关系:
// models/order.js
import DS from 'ember-date';
export default DS.Model.extend({
transferableItem: DS.belongsTo('transferable-item', { polymorphic: true })
});
// models/transferable-item.js
import DS from 'ember-date';
export default DS.Model.extend({
order: DS.belongsTo('order')
});
// models/ticket.js
import TransferableItem from './transferable-item';
export default TransferableItem.extend();
我的JSON看起来像这样:
{
"orders": [{
"id": 111,
"transferableItem": 999
"transferableItemType": "Ticket"
}],
"tickets": [{
"id": 999
}]
}
查看Ember Inspector,订单和门票均正确加载。然而,他们两人之间的联系被打破了。我收到这个错误:
您在带有ID的'订单'上查找'transferableItem'关系 999但未加载一些相关记录。要么做 确保它们都与父记录一起加载,或指定 这种关系是异步的(
DS.belongsTo({ async: true })
)
根据Ember Inspector,没有加载transferable-item
,所以在某种程度上,这个错误是有道理的。但是,由于这是一个多态关系,它不应该只是尝试使用关联的Ticket,实际上是加载了吗?
答案 0 :(得分:1)
继续挖掘,发现嵌入记录时语法需要改变。 JSON应如下所示:
{
"orders": [{
"id": 111,
"transferableItem": {
"id": 999
"type": "ticket"
}
}],
"tickets": [{
"id": 999
}]
}