3

、 、などのいくつかの属性を持つBookモデルがあります。過去の価格情報の大きなリストです。titleauthorpricesprices

pricesAPI から書籍のリストをリクエストするときは、レスポンスを小さくするためにフィールドを除外します。

書籍の詳細ビューで、完全な書籍情報をリクエストします (そして d3 を使用してチャートをレンダリングします)。ember-data は API から単一の本を取得し、モデルを更新します。すべて問題ありません。

私の書籍の単一ページは、私の書籍リスト リソースのネストされたリソースです。

App.Router.map ->
  @resource 'books', ->
    @resource 'book', path: ':book_id'

App.BooksRoute = Ember.Route.extend
  model: ->
    App.Book.find()

App.BookRoute = Ember.Route.extend
  model: (params) ->
    Book.find(params.book_id)

書籍の詳細ページ (/#/books/42ではなく/) でアプリに入ると、API が最初に応答する要求、単一の書籍または書籍リストのいずれかを判断できません。場合によっては、単一の書籍データが最初に処理され、次に書籍リスト データが処理され、ember-data が既存のデータを新しく取得したデータで上書きすることがあります。

私の問題は次のとおりです。書籍リストの応答に含まれていないフィールドは、単一の書籍の応答のpricesに書籍リストの応答を受信すると、モデル レコードから消去されます。

したがって、私の質問: ember-data がフィールドを で上書きするのを防ぐ方法はありますundefinedか?

この行動もよくわかりません。これは本当にバグですか?新しい API 応答が指定する値を更新することnullは理にかなっていることがわかりますが、値を置き換えることundefinedは非常に驚くべきことでした。


  • リスト データで応答する前に数秒間待機するように API に指示することで、これを簡単に再現できます。
  • 最新の Ember リリース (1.0 final!) を使用しています。
  • builds.emberjs.comの最新の ember-data を使用しています
  • pricesauthorタイプ「生」(カスタム)の属性ですが、リスト応答からフィールドを除外しても同じです

これを解決する ember-data に代わるものがある場合は、それに切り替えるつもりです (他に大きな欠点がない場合 – 現在は使用していませんhasMany!)

4

0 に答える 0