1

これは私の理解に関する質問です。

Rails では、親と子の 2 つのモデル間に has_many-belongs_to 関連付けを設定すると、id は子にのみ保存されます。子の親を見つけたい場合は、子の ID を使用してデータベースを照会します。すべての親と子を見つけるために、現在の親と一致するparent_idを持つすべてのレコードについてデータベースが照会されます。Rails は私のバックエンドなので、これは ember-data がやり取りしているものです。

ember-data の関連付けは、両方の方法でセットアップする必要があり、id は両方のモデルに存在する必要があるようです。has_many 関係を持つモデルには、その子の ID を含む配列が必要です。ただし、これはサーバー側には保存されません。

残り火を使用するクライアント側では、親と子をリストできる必要があります。ただし、すべての親のすべての子を反復処理しないと、これにアクセスできません。

ここには根本的な不一致があり、アプリケーションを正しく実装していることを確認したいだけです。私のajaxは各親でIDの配列を返す必要がありますか、それともクライアント側でこれらを埋める必要がありますか?

4

1 に答える 1

4

idsJSONにリレーションシップの配列を含めることhasManyは、厳密に言えばオプションです。これがないと、Ember-Data はすでにロードされている関連レコードしか見つけることができないため、実際には必須です。

たとえば、

App.Post = DS.Model.extend({
  comments: DS.hasMany('App.Comment')
});

App.Comment = DS.Model.extend({
  post: DS.belongsTo('App.Post')
});

comment_idsJSON で配列を省略した場合は、すべてのコメントをロードpostするために手動で呼び出してから、特定の に関連付けられたすべてのコメントが確実に含まれるようにする必要があります。App.Comment.find()post.get('comments')post

comment_idsの JSON に配列を含めるとpost、Ember-Data はまだ読み込まれていないコメントに対して後続のリクエストを行います。

于 2013-03-01T00:39:20.893 に答える