2016-09-05 2 views
0

Ich verwende jsonapi-Direktiven, um eine Verbindung zwischen der ember.js-App und einer API herzustellen. Ich habe eine track, die 50 oder mehr comments haben könnte, und ich muss sie auf einer Route laden, um etwas Logik durchzuführen.Wie werden Werte von jsonapi auf einem Router mit Ember-Daten eingebunden?

Dies ist und beispiel Antwort des 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..." 
      } 
     } 
    ] 
} 

Nun stell dir vor es mit 50 Kommentaren, würde dies sehr verbraucht eine Anforderung für jeden Anruf zu tätigen. Wenn ich es in einer Ansicht mit einer each Schleife mache, macht es nicht alle Anfragen, aber ich versuche es in einer Route zu erreichen, es wird alle Anfragen machen. Wie erreiche ich das mit dem folgenden Code?

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

Antwort

1

U können in Ihrem Adapter-Eigenschaft "coalesceFindRequests"

coalesceFindRequests: true 

Wenn Sie coalesceFindRequests auf true gesetzt wird stattdessen die folgende Anforderung auslösen:

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

so macht dies nur ein rufen Sie für alle Kommentare auf.

Hinweis: Das Zusammenführen von Anforderungen hängt von der URL-Erstellungsstrategie ab. Also, wenn Sie override buildURL in Ihrer App groupRecordsForFindMany eher sollte überschrieben werden, auch für die Koaleszenz zu arbeiten.

+0

Das sieht nach einer guten Alternative aus, danke. – rafamds

Verwandte Themen