2017-07-18 45 views
0
我都取决于它是否在捉弄所有用户或单个用户,如标有不同房源的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表只有id,nameusername,而locationdevices是具有user_id列的独立表格。

如何在Ember中定义这样的模型?我是否定义了所有字段并将其全部清空?或者我是否需要更改后端API服务器以适应Ember的工作方式(不理想)?理想情况下,我想使我的Ember模型符合我从API服务器提取的数据,而不是数据库中的数据,如果这样做有道理的话。

谢谢你的时间!

回答

1

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

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

除非每个用户拥有数百个设备或更多,否则不应该担心性能。如果是这种情况,为什么你不包括/用户的设备。

如果您确实想要为/用户包含小型有效负载,您只能发送设备的ID。这样,Ember Data只会在需要时才会延迟加载设备。

+0

感谢您的反馈,但如果用户拥有100个设备,该怎么办?在Slack频道上进行对话后,看起来我可以使用JSON API提供的“included”参数,并且我需要在我的API服务器上实现该功能(在这种情况下,我不需要在Ember上更改我的模型,但只是为了指定它的关联)。我想这可以弥合客户端和服务器之间的紧张关系。 – finferflu

+1

是的,当然,如果它适合你,你可以试试。 :) –

相关问题