Я играл с (Vue) Apollo и до сих пор у меня не было особых проблем, особенно с удаленными данными. Запрос локальных данных (состояния) - вот что вызывает у меня некоторые проблемы. Я пытаюсь получить статус авторизации пользователя, но у меня неожиданные результаты, когда ответом о выходе из системы является {data: null, loading: false, networkStatus: 7, stale: true}
.
Я включил соответствующие фрагменты кода. Просто для записи, я могу успешно войти в систему и обновить кэш, в частности, статус авторизации. Запрос этой информации об авторе - моя проблема.
Редактировать : Я должен указать на это (и я только что это заметил), когда я очищаю localStorage, удаляя как маркер аутентификации, так и текущего пользователя, яполучить ожидаемый { data: { authInfo: { isAuthenticated: false, currentUser: null } } }
распечатанный в консоли. Однако при входе в систему, когда маркер авторизации и текущий пользователь сохранены в хранилище браузера, у меня возникает проблема { data: null, ...}
. Странно!
Аутентичное (локальное) состояние
import { InMemoryCache } from 'apollo-cache-inmemory';
const cache = new InMemoryCache();
cache.writeData({
data: {
authInfo: {
isAuthenticated: !!localStorage.getItem('token'),
currentUser: localStorage.getItem('current-user') || null,
__typename: 'Auth'
}
},
});
export default cache;
Схема аутентификации
import gql from 'graphql-tag';
export const AUTH_INFO = gql`
query AuthInfo {
authInfo @client {
isAuthenticated
currentUser {
id
username
}
}
}
`;
Запрос аутентификации
<script>
import { AUTH_INFO } from '@/graphql/queries';
export default {
name: "home-page",
methods: {
async fetchAuthInfo() {
try {
const data = await this.$apollo.query({
query: AUTH_INFO,
});
console.log(data);
} catch (error) {
console.log(error);
}
},
},
created() {
this.fetchAuthInfo();
},
};
</script>