Ember JS: Как повторно использовать данные ember во время разговора? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть две модели для вызова.В первой модели я включаю некоторые данные вроде этого.

this.store.query('comment',{
   include : 'person,address'
});

И во второй вызов я включаю те же данные, которые уже хранятся в магазине.

this.store.query('post',{
   include : 'person,address'
});

Итак, вызов APIзанимает много времени, чтобы решить.Можно ли как-нибудь использовать первый API для включения данных во второй вызов API, чтобы создать связь между этими двумя моделями (человек, адрес).Это сэкономит мне много времени.

Примечание. Примеры приведены только для целей тестирования.

1 Ответ

1 голос
/ 27 мая 2019

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

Если вы ожидаете, что две из этих записей уже кэшированы локально, вы можете просто не захотеть просить сервер включить их?В этом случае может быть дешевле загрузить их впоследствии в объединенном запросе .

...