joy*_*joy 7 apollo graphql react-apollo apollo-client
我正在使用apollo 2.0。我首先authUser
graphql
调用服务器以提供给定的用户名和密码,这会生成jwt
令牌并作为响应返回令牌。我确实看到成功登录后将User
其存储cache
为id
键值。我有Buy
按钮,我需要做validateSSOSession
的给予token
。对于validateSSOSession
,我需要token
从缓存中读取。
我经历了client.readQuery
,client.fragementQuery
但是两者都不适用于我的情况bcz client.readQuery
期望在服务器之前调用过相同的查询,并且我应该具有相同的变量。由于我没有,username/password
所以我不能打电话client.readQuery
。同样,client.fragementQuery
期望id
是强制性的。由于我没有,id
因此无法使用它。
暂时,我只是data
从下面cache
进行迭代和过滤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;
Run Code Online (Sandbox Code Playgroud)
是否有其他简便方法可以User
从高速缓存中查询给定条件?
小智 6
我用client.readQuery()
. 请参阅有关该https://www.apollographql.com/docs/react/api/apollo-client.html#ApolloClient.readQuery的文档
import gql from 'graphql-tag';
import { withApollo } from "react-apollo";
const MY_QUERY = gql`
query {
user {email}
}`;
const MyReactComp = ({client}) =>{
const someQueryResult = client.readQuery({ query: MY_QUERY });
return someQueryResult.user ? 'hello user' : 'oops';
}
export default withApollo(MyReactComp);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3315 次 |
最近记录: |