如何定义仅在单项视图中应用的关联模型?

时间:2017-07-18 17:33:36

标签: ember.js model ember-data relationship

我有一个API服务器,它具有不同的列表,具体取决于它是否拉动所有用户或单个用户,例如:

GET /users/返回:

id: 1
name: Name One
username: nameone

id: 2
name: Name Two
username: nametwo

GET /users/1返回:

id: 1
name: Name One
username: nameone
location: Street 1, City One
devices: [device1, device2]

单个用户列表中发生的事情是关联,即我的user表只有idnameusername,而{{1} }和location是具有devices列`的单独表格。

如何在Ember中定义这样的模型?我是否定义了所有字段并将其留空以获取完整列表?或者我是否需要更改后端API服务器以使其适应Ember的工作方式(不理想)?理想情况下,我希望将我的Ember模型与我从API服务器中提取的数据相符,而不是与数据库中的数据相符,如果这有用的话。

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

您应始终为每个用户包含相同的有效负载(在/ users和/ user端点中包含设备[或仅包含其ID])。

想象一下,首先从/ users获取USER_1的响应(不完整 - 没有设备),然后转到/ users / 1。 Ember Data已经加载了USER_1,因此它不会向您的API发出请求。 USER_1将被视为已满载。检查哪些记录部分加载(并重新加载)以及哪些记录是完全加载的将是一团糟。

除非每个用户或更多用户拥有数百台设备,否则您不必担心性能太高。如果是这种情况,为什么你没有为/ users包含设备。

如果您真的想为/ users包含小的有效负载,则只能为设备发送ID。这样,Ember Data只会在需要时懒洋洋地加载设备。