Вы используете query()
метод Ember Data's store
.Он ожидает два аргумента: имя модели в качестве первого аргумента и query
в качестве второго аргумента.Последний напрямую передается на ваш бэкэнд как часть запроса.Ответственный код довольно прост: https://github.com/emberjs/data/blob/v3.10.0/addon/adapters/rest.js#L535-L560
Если вы используете значение по умолчанию JSONAPIAdapter
, запросы, выполняемые вашими вызовами методов, выглядят так:
this.store.query('comment', { include: 'person,address' });
=> GET /comments?include=person,address
this.store.query('post', { include: 'person,address' });
=> GET /posts?include=person,address
API не знает отэтот запрос, что клиент уже имеет некоторые из записей person
и address
, кэшированных локально.Ember Data не включает эту информацию по умолчанию.Вы можете настроить свой адаптер два, сделайте это, но я бы не советовал, особенно потому, что это может взорвать размер запроса и снизить частоту обращений к кешу.Также вы можете захотеть перезагрузить локально кэшированные записи.
Если вы ожидаете, что две из этих записей уже кэшированы локально, вы можете просто не захотеть просить сервер включить их?В этом случае может быть дешевле загрузить их впоследствии в объединенном запросе .