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