Подписка на угловой запрос Apollo observable приносит старые значения, проблема с кэшированием - PullRequest
0 голосов
/ 29 августа 2018

Я использую graphql в бэкэнде и Apollo для звонков. В ngOnInit я подписываюсь на запрос Apollo, наблюдаемый для получения всех проектов, он работает нормально, я добавляю проект, затем перехожу к другому компоненту и возвращаюсь, чтобы ngOnInit вызывался снова, и я получал новый список проектов с сервера (после добавление проекта), но он приносит тот же список (до добавления). Если я обновлю страницу, я получу новый список с новым проектом. Я пытался отписаться в onDestroy, но все равно не повезло. Я пытался использовать watchQuery, но, очевидно, моя версия Apollo не имеет valueChanges с использованием Apollo anguoar 0.11.0, единственной, которая работала с моим проектом angular 4.

1 Ответ

0 голосов
/ 30 августа 2018

Проблема связана с кешем Аполлона. Когда вы делаете тот же запрос, он использует предыдущий результат, полученный из запроса.

Есть несколько решений, чтобы заставить его не использовать кеш.

Как я предложил в комментариях, вы можете указать параметр HTTP, который будет меняться для каждого запроса HTTP. Например, что-то в зависимости от текущего времени, например &time=Date.now().toString(). Каждый запрос будет отличаться, поэтому Apollo не будет использовать кеш.

Но вы также можете (как вы сказали), и, возможно, лучше, просто сбросьте его, введя client.resetStore() в ngOnDestroy(). Это приведет к очистке хранилища и повторной загрузке всех активных запросов. ( источник )

...