如何解决删除特定查询的 __typename
我正在使用 @apollo/client
并在我的应用中查询图形协议。除了未使用 __typename
字段的 _Meta
查询外,所有查询都可以很好地与 __typename
配合使用。
所以我从那个查询中得到这个错误 - Null value resolved for non-null field '__typename'
。
首先,如果我将 addTypename
设置为 false,那么 _Meta
查询可以正常工作,但是对于使用 __typename
字段的其他查询,缓存无法正常工作。
我尝试使用中间件来省略该特定查询的 __typename
字段,但奇怪的是我无法从操作/上下文对象中找到任何 __typename
键/值。
我还尝试在中间件的上下文缓存配置中将 addTypename
设置为 false,但没有奏效。
const cleanTypeName = new ApolloLink(
(operation: Operation,forward: NextLink) => {
if (operation.operationName === "_Meta") {
if (operation.variables) {
const omitTypename = (key,value) =>
key === "__typename" ? undefined : value
operation.variables = JSON.parse(
JSON.stringify(operation.variables),omitTypename
)
}
const context = operation.getContext()
operation.setContext({
...context,cache: {
...context.cache,addTypename: false,config: {
...context.cache.config,},})
}
return forward(operation)
}
)
实际上,如果我通过 console.log
检查 operation.variables
是空的,因为 _Meta
查询不需要传递任何参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。