gpt4 book ai didi

graphql - 从缓存graphql apollo 2.0读取数据

转载 作者:行者123 更新时间:2023-12-04 12:39:14 24 4
gpt4 key购买 nike

我正在使用apollo 2.0。我首先针对给定的用户名和密码对服务器进行authUser graphql调用,这会生成jwt token 并作为响应返回 token 。我确实看到成功登录后,User作为cache键值存储在id中。
我确实有Buy按钮,需要在其中为给定的validateSSOSession制作token。对于validateSSOSession,我需要从缓存中读取token

我经历了client.readQueryclient.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;

是否有另一种简便的方法可以从缓存中查询给定条件的 User

最佳答案

我使用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);

关于graphql - 从缓存graphql apollo 2.0读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50197269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com