3

優れたJSONAPI::Resources gem を使用してデータを公開し、Rails バックエンドで Ember アプリを開発しています。

特定の関係をサイドロードしながらstore.findRecord、 、 などを使用してバックエンドからレコードをフェッチしたいと思います。store.queryJSONAPI::Resourcesは仕様のこの部分をサポートし ていますが、リクエスト URL にEmber Data のパラメーターを含める方法がわかりません。?include=...

Ember Data (2.2.0) に、リソースを取得するときに関係を含めるようにバックエンドに要求するように指示するにはどうすればよいですか?

4

2 に答える 2

7

ds-finder-include可能であれば、機能フラグを含む Ember Data 2.4 ベータ版を試すことができます。

この機能フラグを使用すると、キーを使用してオプション ハッシュを渡すことができますincludes

機能フラグを有効にする方法については、ガイドを確認してください。

于 2016-01-19T02:10:38.907 に答える
4

これを処理する方法は、アプリケーション アダプターを変更してインクルードを処理し、インクルードをアダプター オプションとしてクエリに渡すことです。現在、単一のインクルードのみを処理していますが、配列を処理するのはそれほど難しくありません。

アプリ/アダプター/application.js

import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({

  urlForFindRecord(query, modelName, snapshot) {
    var url = this._super(...arguments);

    return this._processIncludes(url, snapshot);
  },

  urlForFindAll(query, modelName, snapshot) {
    var url = this._super(...arguments);

    return this._processIncludes(url, snapshot);
  },

  _processIncludes(url, snapshot) {
    var options = snapshot && snapshot.adapterOptions;

    if (options && options.include) {
      url = `${url}?include=${options.include}`;
    }

    return url;
  },


});

次に、ルート モデル フックにアダプター オプションを追加します。

return this.store.findRecord('myModel', params.id, {
  adapterOptions: {
    include: ['myChildModel']
  }
于 2016-01-19T02:25:55.687 に答える