首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突变前从urql查询结果中删除__typename字段

突变前从urql查询结果中删除__typename字段
EN

Stack Overflow用户
提问于 2021-05-18 22:37:10
回答 1查看 2.2K关注 0票数 1

当从GraphQL服务器查询数据时,urql添加一个_typename字段来跟踪缓存:

代码语言:javascript
复制
{
    __typename  "Book"
    name  "test"
    description "the book"
    id  "hPl39w4rzc2HZxkfHDyj"
    auther "John Doe"
}

我想更新这个对象并将其保存回数据库。当useMutation函数被调用时,__typename也被传递,并且由于它不是服务器模式的一部分,它将导致一个错误:

代码语言:javascript
复制
Field \"__typename\" is not defined by type

我知道在调用useMutation之前我可以这样做:

代码语言:javascript
复制
delete input.__typename;

但我想知道在全球范围内是否有更好的方法来处理urql?例如,在阿波罗客户机中,您可以在更新之前使用ApolloLink从所有变量中删除__typename。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 22:41:16

代码语言:javascript
复制
const result = {
    __typename:  "Book",
    name:  "test",
    description: "the book",
    id:  "hPl39w4rzc2HZxkfHDyj",
    auther: "John Doe"
}

const {__typename, ...rest} = result;

console.log(rest)

最好在graphql客户机中的对象上保留这个标记,因为它可以帮助缓存完成它的任务。因此,您可以根据需要删除它--在这里您可以更新"rest“,并使用它来调用您的更新突变。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67594809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档