説明:
ember-dataを使用すると、さまざまなシナリオが表示されますが、現時点では内部の動作とは一致していないようです。まず、いくつかのデータ:
{ "post":
  {
    "id": "60",
    "title": "Hello, Stack Overflow friends!",
    "comments": []
  }
}
上記がデータベースからのデータであるとしましょう。
次に、各クライアントを呼び出すことにより、クライアント1とクライアント2postでそれぞれレコードがフェッチされます。これまでのところ、どちらも同じレコードを持っています-空の配列がロードされています。post = App.Post.find(60)postcomments
後で、クライアント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を呼び出してレコードがフェッチされますcomment = App.Comment.find(80)。
post.get('comments') ...それでも、クライアント1を呼び出すと、コメントは0になります。新しいコメントは正常にフェッチされましたが、commentとの間の関連付けは行われませんpostでした。
問題:
commentクライアント1でコメントをフェッチするとき、レコードをレコードに関連付ける自動関連付けの魔法は発生していませんpost。
post注1:クライアント1では、レコードは元々。でロードされていたため、これは発生しませんcomments: []。配列にコメントIDが含まれている場合80、これは機能します(ロード時にコメントが存在しなかったという事実を除く)。
注2:post.get('comments').addObject(comment)クライアント1を呼び出すことで手動で関連付けを追加できますが、これはpostレコードを汚し、これを処理する適切な方法ではないようです。
質問:
- レコードを汚すような機能や同様の機能を使用せずに、クライアント1のとレコード
postの間に何らかの方法で関連付けを作成する方法はありますか?commentaddObjectpost