2017-07-18 23 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

是的,當然,如果它適合你,你可以試試。 :) –

相關問題