4

私は、ember-data のモデルに 2 番目のモデルに関連する ID が含まれている場合、この ID を使用して、2 番目のモデル オブジェクトとの属している関係を確立することもできると想定していまし。どうやらそうではないようです。

ember-data のストアに存在する 2 つのオブジェクト間の関係を相互に関連付けるために必要な状況を知っている人はいますか? 関連するオブジェクトを同時にロードする必要がありますか? (または、RESTAdapter の場合は同じ要求で通過します) ID 参照が機能するためには? それらが同じリクエストを通過しない場合、関係を探して手動で設定するリクエストのイベントハンドラーを追加することなく、後のリクエストでその関係を確立する方法はありますか? 私が見ている問題の例を次に示します。

App.ModelA = DS.Model.extend({
  name:      DS.attr('string'),
  modelBId:  DS.attr('number'),
  modelB:    DS.belongsTo('App.ModelB')
});

App.ModelB = DS.Model.extend({
  name: DS.attr('string')
});

App.ModelB.find(2);       // returns an object

modelA.get('modelBId');   // returns 2
modelA.get('modelB');     // returns null
4

2 に答える 2

2

関連するオブジェクトのIDは、たとえばRESTAPIからデータをロード/保存する場合に役立ちます。次に、RESTAdapterを使用して、関連するオブジェクトのIDを送信できます。

たとえば、リレーションシップの場合、ember-dataは、関連するオブジェクトのIDをbelongsTo持つキーを送信することを前提としています。model_b_id次に、ember-dataは、通常はAPIの呼び出しによって、このオブジェクトのロードを処理します。GET model_b/the_id

idによる参照を与える代わりに、それらを埋め込むことによって関連するオブジェクトをロードすることも可能です。

その他の例については、StackOverflowおよびember-dataプロジェクトの例/テストに関する他の質問を参照してください。

于 2013-03-07T17:49:43.750 に答える
2

アダム、

私は自分自身で Ember Data から始めていますが、混乱は通常、REST API の多くの自動化/仮定によるものです。試す:

App.ModelA = DS.Model.extend({
  name:      DS.attr('string'),
  modelB:    DS.belongsTo('App.ModelB')
});

REST API が次のようなモデル A を返す場所:

{"model_a":{"name": "Adam", "model_b_id": 2}}

効果的かつデフォルトで、Ember Data は、すべての属している関係に対して「_id」をデキャメル化された属性名に、または「_ids」を任意の hasMany に追加します。

于 2013-03-13T16:28:37.453 に答える