0

Ember-Data でいくつかの非同期関係を取り除き、代わりにそれらをサイドロードしようとしていますが、いくつかの問題が発生しています。

私の API は関連するデータを返しますが、レコードは、ルートの個別の配列/オブジェクトではなく、返される各オブジェクトのプロパティです。私はextractArrayデータを改変するために使用しているので、EDはそれを気に入っていますが、完全に正しくすることはできません. API から返されるデータのサンプルを次に示します。

{
  "record": [
    {
      "id": 2,
      "name": "3M Aerospace",
      "currency": 6,
      "paymentTerms": 3,
      "Currencies_by_currency": {
        "id": 6,
        "currency": "USD",
        "description": "US Dollar",
        "sortOrder": 1
      },
      "PaymentTerms_by_paymentTerms": {
        "id": 3,
        "term": "NET10",
        "description": "Due with 10 days of invoice date"
        "sortOrder": 3
      }
    },
    {
      "id": 3,
      "name": "BAE Aerospace",
      "currency": 6,
      "paymentTerms": 3,
      "Currencies_by_currency": {
        "id": 6,
        "currency": "USD",
        "description": "US Dollar"
        "sortOrder": 1
      },
      "PaymentTerms_by_paymentTerms": {
        "id": 3,
        "term": "NET10",
        "description": "Due with 10 days of invoice date"
        "sortOrder": 3
      }
    }
  ]
}

オブジェクト ルートからCountries_by_mailingAddressCountryCurrencies_by_currency、およびを取得する必要があることはわかっています。PaymentTerms_by_paymentTerms彼らはいったいどこへ行くべきなのだろうか?私はそれがあるべきだと思った:

{
    "record": [
        {
            "id": 2,
            // other data...
            "currency": 6,
            "paymentTerms": 3,
            // more data...
        }, {
            "id": 3,
            // other data...
            "currency": 6,
            "paymentTerms": 3,
            // more data...
        }
    ],
    "currencies": [
        {
            "id": 6,
            "currency": "USD",
            "description": "US Dollar",
            "sortOrder": 1
        }
    ],
    "paymentTerms": [
        {
            "id": 3,
            "term": "NET10",
            "description": "Due with 10 days of invoice date",
            "isActive": true,
            "sortOrder": 3
        }
    ]
}

しかし、ED は、関連するデータが見つからないと文句を言います。モデルは次のように定義されます。

App.Vendor = DS.Model.extend(App.Addressable, {
    name: DS.attr('string'),
    currency: DS.belongsTo('currency'),
    paymentTerms: Ds.belongsTo('payment-term')
});

App.Currency = DS.Model.extend({
    currency: string,
    description: string,
    sortOrder: number,
});

App.PaymentTerm = DS.Model.extend({
    term: string,
    description: string,
    sortOrder: number,
});
4

1 に答える 1

1

最後に、jsonを次の形式に再フォーマットする必要がありました

{
    "vendors": [
        // vendor objects
    ],
    "currencies": [
        // currency objects
    ],
    "paymentTerms": [
        // paymentTerms objects
    ]
}

これを正しくフォーマットしてアダプターをリファクタリングすると、すべてがグレービーになりました。

于 2014-12-01T19:41:05.200 に答える