簡體   English   中英

如何處理灰燼數據記錄之間的關聯

[英]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條評論。 即使成功獲取了新評論, commentpost之間也沒有關聯。

問題:

  • 在客戶端1上獲取評論時,沒有自動關聯魔術將comment記錄與post記錄相關聯。

注意1:不會發生這種情況,因為在客戶端1上,該post記錄最初加載了comments: [] 如果數組包含注釋id 80 ,則該數組將起作用(除了在加載時注釋不存在的事實)。

注意2:我可以通過在客戶端1上調用post.get('comments').addObject(comment)來手動添加關聯, post.get('comments').addObject(comment) post記錄,而且似乎不是處理此問題的正確方法。

題:

  • 有沒有辦法以某種方式在客戶機1上的postcomment記錄之間創建關聯,而不涉及使用addObjectaddObject post記錄的任何類似函數?

當您加載具有belongsTo關系的記錄時, belongsTo燼數據當前不會更新該關系的“父”記錄。

解決您的問題的一種方法是側加載“父”記錄。 對於您的情況,您將通過XHR或WS發送commentpost

有針對此問題的公開票證https://github.com/emberjs/data/pull/695

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM