[英]How to handle associations between records in ember-data
在處理余燼數據時,會彈出許多不同的場景,這些場景似乎都與此時內部結構的工作方式不匹配。 首先,一些數據:
{ "post":
{
"id": "60",
"title": "Hello, Stack Overflow friends!",
"comments": []
}
}
說上面的是來自數據庫的數據。
然后, 分別通過在每個客戶端上調用post = App.Post.find(60)
來在客戶端1和客戶端2上獲取post
記錄。 到目前為止,它們都具有相同的post
記錄-加載了一個空的comments
數組。
稍后,將在客戶端2上創建評論。 這是通過調用comment = App.Comment.createRecord({text: "Why, hello there.", post: post})
。
然后將注釋數據保存在服務器端,如下所示:
{ "comment":
{
"id": "80",
"text": "Why, hello there.",
"post_id": "60"
}
}
此時, 客戶端2是最新的 -因為這是創建注釋的地方-但客戶端1是不同步的 ,因為它不知道新注釋。
現在,客戶端1可以通過一種方式(通過XHR或WS)了解新創建的注釋。
客戶端1知道ID后,即可通過調用comment = App.Comment.find(80)
來獲取comment
記錄。
...但是在客戶端1上調用post.get('comments')
產生0條評論。 即使成功獲取了新評論, comment
與post
之間也沒有關聯。
comment
記錄與post
記錄相關聯。 注意1:不會發生這種情況,因為在客戶端1上,該post
記錄最初加載了comments: []
。 如果數組包含注釋id 80
,則該數組將起作用(除了在加載時注釋不存在的事實)。
注意2:我可以通過在客戶端1上調用post.get('comments').addObject(comment)
來手動添加關聯, post.get('comments').addObject(comment)
post
記錄,而且似乎不是處理此問題的正確方法。
post
和comment
記錄之間創建關聯,而不涉及使用addObject
或addObject
post
記錄的任何類似函數? 當您加載具有belongsTo
關系的記錄時, belongsTo
燼數據當前不會更新該關系的“父”記錄。
解決您的問題的一種方法是側加載“父”記錄。 對於您的情況,您將通過XHR或WS發送comment
和post
。
有針對此問題的公開票證https://github.com/emberjs/data/pull/695
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.