1

私のユーザーの JSON は次のような結果を返します。

{
    users: [{...}]
    some_other_data: {}
    some_other_data2 [{...}]
}

JSON結果から他のキーを削除すると、正常に機能しますが、JSON結果に追加の他の「キー」を含める必要があります。

ここの回答から解決策を適用しようとしました - ember-data find() と複数のパラメータで単一のレコードを返します

しかし、私のコードを変更する

App.Store = DS.Store.extend
    revision: 12
    adapter: 'DS.RESTAdapter'

上記のソリューションに似たものにすると、私のemberアプリが要求するパスが台無しになります。

4

1 に答える 1

2

ember-data の JSON 応答では、追加のプロパティはサポートされていません。

サポートされている唯一の「追加」プロパティはmetasinceです。たとえば、次のとおりです。

{
  meta: {}
  since: {}
  users: [{...}]
}

extractMetaこの追加のプロパティは、次のように、シリアライザーの関数にフックすることで後で抽出できます。

App.CustomRESTSerializer = DS.RESTSerializer.extend({
  extractMeta: function(loader, type, json) {
    var meta, since;
    meta = json[this.configOption(type, 'meta')];
    since = json[this.configOption(type, 'since')];
    if (!meta || !since) { return; }
    Ember.set('App.metaDataForLastRequest', meta);
    Ember.set('App.sinceForLastRequest', since);
    this._super(loader, type, json);
  }
});

App.Store = DS.Store.extend({
  adapter: DS.RESTAdapter.create({
    serializer: App.CustomRESTSerializer
  })
});

IMO、可能であれば、バックエンドから返された JSON を変更し、追加のモデルを定義して追加のデータを取得し、またはUserのような関係でモデルにバインドして、物事を機能させる必要があります。hasManybelongsTo

それが役に立てば幸い。

于 2013-08-04T22:52:43.703 に答える