Ember没有加载嵌入的多态关系

时间:2015-09-21 21:36:54

标签: ember.js polymorphic-associations

我正在使用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,实际上是加载了吗?

1 个答案:

答案 0 :(得分:1)

继续挖掘,发现嵌入记录时语法需要改变。 JSON应如下所示:

{
  "orders": [{
    "id": 111,
    "transferableItem": {
      "id": 999
      "type": "ticket"
    }
  }],
  "tickets": [{
    "id": 999
  }]
}