【发布时间】:2018-10-16 06:14:40
【问题描述】:
我正在使用阿波罗 2.0。我首先对给定的用户名和密码进行authUsergraphql 调用服务器,生成jwt 令牌并返回令牌作为响应。我确实看到成功登录后,User 存储在cache 中作为id 键值。
我确实有Buy 按钮,我需要为给定的token 制作validateSSOSession。对于validateSSOSession,我需要从缓存中读取token。
我经历了client.readQuery,client.fragementQuery,但两者都不适用于我的案例 bcz client.readQuery 期望之前已向服务器调用相同的查询,我应该有相同的变量。因为我没有username/password,所以我不能打电话给client.readQuery。同样,client.fragementQuery 期望 id 是强制性的。由于我没有id,因此无法使用它。
暂时,我只是从cache 迭代data 并过滤User,如下所示。
const data = client.cache.data.data;
const users = _.values(data).filter(obj=>(obj.__typename==='User' && obj.token));
const token = users[0].token;
// Make graphql call to validate sso
const { data } = await client.query({
query: GET_SSO_USER,
variables: { token }
});
const authenticated = data.getSingleSignOnUser.user.userId;
是否有其他简单的方法可以从缓存中查询User 以获得给定条件?
【问题讨论】:
标签: graphql apollo react-apollo apollo-client