gpt4 book ai didi

javascript - Apollo GraphQL - 如何从缓存存储中获取突变记录的数据?

转载 作者:行者123 更新时间:2023-11-30 20:46:56 24 4
gpt4 key购买 nike

我正在使用 React-Native 开发一个应用程序,并在服务器端使用 GraphQL 作为 REST。我的应用程序中有身份验证层,我想实现读取从服务器的突变查询中获得的数据。

这是传递给 props 的 signIn 方法:

const login = graphql(LoginMutation, {
props: ({ mutate }) => ({
login: (user) =>
mutate({
variables: { email: user.email, password: user.password },
refetchQueries: [{ query: fetchShop }],
update: (proxy, { data: { signIn } }) => {

console.log("USSER : " + JSON.stringify(signIn))

const query = gql`
{
currentUser {
id
email
jwt
__typename
}
}
`;
try {
proxy.writeQuery({ query: query, data: signIn })
} catch (error) {
console.log("Error occured due to the followig error at write query : "+error)
}

//data.user.push(mutationResult.signIn);
//proxy.writeQuery({query,data})
}
}),
}),
});

这是我的登录突变:

import gql from 'graphql-tag';

export default gql`
mutation SignIn($email : String!,$password : String!){
signIn(email : $email, password : $password){
id
email
name
jwt
}
}
`;

我将身份验证 token 保存在 React-Native 库的 AsyncStorage 中。我想做的是从商店中获取 userInformation。从缓存存储中读取根查询没有任何问题。

我深入研究了 Apollo-client 提供的客户端 props。我可以在那里看到用户数据。它在商店下的一些名为 ROOT_MUTATION 的属性下。 (我可以分享 Prop 数据)

我正在使用 readQuery,但它会针对“{“id”中的 currentUser 中缺少字段:“……..”、“email”:“asdasds”、“name”:“ajdasdasd”、“jwt”发出警告: token

它仍然没有将 currentUser 查询插入到 props.client 的 ROOT_QUERIES。

你知道如何实现这个目标吗?

最佳答案

终于,我达到了我的目的。这是我使用的方法:

第一种方法是登录突变:

const login = graphql(LoginMutation, {
props: ({ mutate }) => ({
login: (user) =>
mutate({
variables: { email: user.email, password: user.password },
refetchQueries: [{ query: fetchShop }],
update: (proxy, { data: { signIn } }) => {

console.log("USSER : " + JSON.stringify(signIn))

const query = gql` {
user{
id
email
jwt
__typename
}
}
`;
proxy.writeQuery({query : query , data : {user : signIn}})
}
}),
}),
});

在你的代码中的某处;您可以通过以下方式从商店(在本例中为用户)读取数据:

const { client } = this.props;
console.log(client.store);

try {
const { user } = client.readQuery({
query: gql`
{
user{
id
email
name
__typename
}
}
`
})
console.log("User : "+JSON.stringify(user))

} catch (error) {
console.log("Error occured at reading user from the cache due to the following err : " + error);
}

关于javascript - Apollo GraphQL - 如何从缓存存储中获取突变记录的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48608927/

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