Как получить включенные значения jsonapi на роутере с ember-данными?

Я использую директивы jsonapi для установления связи между приложением ember.js и API. у меня есть track которые могут иметь как 50 или больше comments и мне нужно загрузить их по маршруту, чтобы выполнить некоторую логику.

Это и пример ответа 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 цикл, он не выполняет все запросы, но я пытаюсь получить к нему доступ в маршруте, он будет выполнять все запросы. Как мне добиться этого с помощью следующего кода?

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

1 ответ

Решение

Вы можете использовать свойство "coalesceFindRequests" в вашем адаптере

coalesceFindRequests: true

Если для coalesceFindRequests задано значение true, вместо этого будет запускаться следующий запрос:

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

так что это делает только один звонок для всех комментариев.

Примечание. Объединение запросов основывается на стратегии построения URL. Так что если вы переопределяете buildURL в вашем приложении groupRecordsForFindMany, скорее всего, оно должно быть также переопределено, чтобы слияние работало.

Другие вопросы по тегам