我要做的事情:
使用突变编辑电子邮件值并重新呈现页面。刷新时数据会更改,但缓存也需要更改,我在修改缓存时遇到了问题。
在这里发布之前,我已经阅读/查看了Legwork:
突变文件
关于更新缓存的文档
获取对象的自定义ID
我认为问题是:
我使用的GraphQL数据库没有实现正确的ID,我无法更改这一点。我将不得不修改ROOT_QUERY缓存并以艰难的方式更新它。由于我的代码现在是,它正在读取我想使用的ID(电子邮件(,作为未定义。错误消息简单地读作";未处理的拒绝(错误(:无法读取未定义"的属性"email";指向节点模块中的函数,而不是我的函数。
我的组件代码可以在这里找到完整的,但我会指出我认为确凿的证据最终在哪里
我试着尽可能多地检查,但无法判断我是否正确地到达了目的地。我看了其他堆栈帖子,youtube,并试图联系一些不和谐的频道,结果碰壁了。任何帮助和解释都将非常好。
发现问题出在缓存上。根本不需要识别!我只需要修复index.tsx 上的InMemoryCache
const client = new ApolloClient({
uri: "http://localhost:8080/graphql",
cache: new InMemoryCache({
typePolicies: {
People: {
keyFields: ["email"],
},
},
}),
});
这使得获取正确索引变得更加容易。