使用:Ember 2.5.1,带有JSONAPIAdapter的Ember Data 2.5.2
我正在创建一个跟踪店内库存转移的应用程序。
我有一张名为转移的表格:
+----+---------------+-------------+----------------+
| id | from_store_id | to_store_id | transfer_notes |
+----+---------------+-------------+----------------+
| 1 | 12 | 32 | transfer to 32 |
| 2 | 9 | 13 | transfer to 13 |
| 3 | 32 | 9 | transfer to 9 |
+----+---------------+-------------+----------------+
每一行代表转移及其来源和目的地商店。
我还有一个名为商店的表格:
+-----+----------+-------------+------------+
| id | store_no | store_state | store_city |
+-----+----------+-------------+------------+
| 12 | tx12 | TX | Dallas |
| 9 | me09 | ME | Bangor |
| 32 | wa32 | WA | Yakima |
| 13 | tn13 | TN | Memphis |
+-----+----------+-------------+------------+
在我看来,这两个表之间的关系是:
如何在Ember Data中定义这些关系?
我最近在3年休息后选择了Ember,我对如何定义这些关系或者它们是否正确感到困惑。真正让我失望的一件事是传输表中 from_store_id 和 to_store_id 的自定义名称。
欢迎任何见解。
如果重要的话我正在使用带有JSONAPI::Serializers
的Sinatra答案 0 :(得分:3)
您可以在一个模型中定义不同的关系,甚至可以自己定义。 guides
中有更多信息在这种情况下,你会做这样的事情:
//model storehouse.js
export default Model.extend({
transferOrigins:hasMany('transfer', { inverse: 'storeOrigin' }),
transferDestinations:hasMany('transfer', { inverse: 'storeDestination' }),
storeNo:attr('string'),
storeState:attr('string'),
storeCity:attr('string')
});
//model transfer.js
export default Model.extend({
storeOrigin:belongsTo('storehouse'),
storeDestination:belongsTo('storehouse'),
fromStoreId:attr('string'),
toStoreId:attr('string'),
transferNotes:attr('string')
});
由于您与同一模型有多个关系,因此您可以帮助ember-data
了解哪个属性与使用inverse
相关。
这里有一个完整的例子ember-twiddle