2016-09-05 6 views
0

私はjsonapiディレクティブを使用してember.jsアプリケーションとAPIを接続しています。私はtrackを持っていて、それは50以上のようなものかもしれません。commentsと私はいくつかのロジックを実行するためにそれらをロードする必要があります。ember-dataを持つルータにjsonapiの値を含めるにはどうすればいいですか?

これは、APIの例の応答であり、:

{ 
    "data": { 
     "id": 1, 
     "type": "track", 
     "attributes": { 
      "name": "XPTO" 
     }, 
     "relationships": { 
      "comment": { 
       "data": [ 
        {"id": 1, "type": "comment"} 
       ] 
      } 
     } 
    }, 
    "include": [ 
     { 
      "id": 1, 
      "type": "comment", 
      "attributes": { 
      "text": "Lorem ipsum..." 
      } 
     } 
    ] 
} 

さて、これは非常に各呼び出しのための要求を行うために消費することになる、50件のコメントでそれを想像してみてください。私がeachループを持つビューでそれを行うと、それはすべての要求をするわけではありませんが、私はそれをルートでアクセスしようとします、それはすべての要求をします。どのように私は次のコードでそれを達成するのですか?そう、これは一つだけになり

GET /comments?ids[]=1&ids[]=2 

this.store.findRecord('track', 1).then((t) => { 
    // logic here 
    // I tried this but it would make all the requests too 
    t.get('comments'); 
}) 

答えて

1

Uは、あなたがtrueにcoalesceFindRequestsを設定する場合は、代わりに次の要求をトリガするアダプタで

coalesceFindRequests: true 

のプロパティ "coalesceFindRequests" を使用することができますすべてのコメントを求めてください。

注:統合のリクエストは、URL構築戦略に依存しています。したがって、あなたのアプリでgroupLecordsForFindMany のbuildURLをオーバーライドした場合は、合体するためには をオーバーライドする必要があります。

+0

これは良い代替手段のようです。 – rafamds

関連する問題