заставить ember store пропустить кеш и получать данные из вызова API - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь понять, как заставить хранилище ember сделать еще один вызов API вместо извлечения записей из кэша, когда я использую findAll.Я знаю, если записи уже загружены, то ember возвращает кэшированные данные, если их не попросить пропустить.Проведя некоторые исследования (блоги, документация и переполнение стека), люди предложили использовать флаг reload: true с findAll, но он не работает для меня.Когда я делаю флаг reload: true, хранилище по-прежнему возвращает мне данные из кэша.

Если я что-то упустил, пожалуйста, помогите.

Код, который у меня есть:

fetchStudentData() {
   this.get('store').findAll('student').then((response) => {
         return response.data;
   });
}

Эта функция привязана к кнопке, поэтому при нажатии мне нужно повторноинициировать вызов API.Я заменил вызов магазина на использование:

this.get('store').findAll('student', { reload: true }).then((response) => {
         return response.data;
   });

Но это также не помогло, так как все равно вернуло мне старые записи в кэше магазина.

1 Ответ

0 голосов
/ 07 марта 2019

Я не знаком с проблемой, с которой вы столкнулись, но если вам совсем не нужен ваш кеш, вы можете сделать следующее:

async myMethod() {
  this.store.unloadAll('student');
  let students = await this.store.findAll('student');
}

Что-то, что озадачило меня по поводу вашего запроса, -что вы делаете response.data внутри вашего then, я знаю, data - это атрибут необработанной полезной нагрузки json, но все методы store, которые возвращают значения, возвращают модели.Таким образом, вы получите студенческие экземпляры вместо исходного json (если вы хотите raw json (я рекомендую против этого), вы можете просто использовать fetch).

...