我一直在和(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>