【发布时间】:2021-06-03 09:18:59
【问题描述】:
我有一个与此类似的登录突变:
mutation login($password: String!, $email: String) {
login(password: $password, email: $email) {
jwt
user {
account {
id
email
}
}
}
}
另一方面,我有一个关于获取帐户详细信息的查询。后端通过随请求发送的 JWT 令牌来验证它是哪个用户,因此无需将帐户 ID 作为参数发送。
query GetUser {
user {
account {
id
email
}
}
}
我现在面临的问题是:Apollo 每次都在发出网络请求,因为 GetUser 没有参数。我会先从缓存中查询。所以我想,我可以按照here 的描述重定向。
首先,我遇到了用户字段不直接返回 id 的问题,因此我定义了一个类型策略:
const typePolicies: TypePolicies = {
User: {
keyFields: ["account", ["id"]],
},
}
所以关于重定向,我在类型策略中添加了以下内容:
const typePolicies: TypePolicies = {
User: {
keyFields: ["account", ["id"]],
},
Query: {
fields: {
user(_, { toReference }) {
return toReference({
__typename: "User",
account: {
id: "1234",
},
})
},
},
},
}
这可行,但是当然有一个固定的 id。有没有办法通过始终重定向到登录期间查询的用户对象来解决这个问题?
或者将 id 作为参数添加到 GetUser 查询是否更好?
【问题讨论】:
标签: graphql apollo apollo-client react-apollo