Graphql 阿波罗缓存正在重置回旧数据
我正在使用AWS AppSync和Apollo构建一个Expo移动应用程序,我遇到了一个间歇性但非常严重的问题,缓存被破坏,或者至少没有正确更新。不幸的是,因为我使用的是AppSync,并且我想要离线功能,所以我无法升级到最新的Apollo客户端,因此数据存储在Redux中,有4个顶级键:Graphql 阿波罗缓存正在重置回旧数据,graphql,react-apollo,appsync-apollo-client,Graphql,React Apollo,Appsync Apollo Client,我正在使用AWS AppSync和Apollo构建一个Expo移动应用程序,我遇到了一个间歇性但非常严重的问题,缓存被破坏,或者至少没有正确更新。不幸的是,因为我使用的是AppSync,并且我想要离线功能,所以我无法升级到最新的Apollo客户端,因此数据存储在Redux中,有4个顶级键:offline,重新水化,AppSync和AppSync元数据 这就是我期望发生的事情: “项目”的GraphQL查询返回正确的数据 此数据将写入缓存。特别是,我希望在appsync.ROOT\u QUERY中
offline
,重新水化
,AppSync
和AppSync元数据
这就是我期望发生的事情:
appsync.ROOT\u QUERY
中会有一个项目条目,类似于getProject({“input”:{“id”:“project-7”})
以及appsync
中的顶级条目,用于项目及其所有属性getProject…project-7
查询添加到缓存中,并为project-7添加一个条目,但由于某种原因,它似乎没有包含所有字段AAS\u WRITE\u缓存
,它实际上会从查询缓存中删除getProject…project-7
条目!不过,变异成功了,我可以看到AppSync服务器中的数据已经更新,客户端不会在任何地方记录任何错误update
添加到变异中,以便我可以自己更新缓存,但是当我执行const data=proxy.readQuery({query:ProjectQuery}…
(指定project-7
)时,它抛出一个异常,表示找不到该查询,因此我无法更新该项目。如果我手动重新获取项目,那么在下一次变异之前,一切都会重新工作
真正困难的是,一旦我的应用程序处于这种状态,我就无法解决如何修复它。我尝试了client.resetStore()
,但它只是被重新水化了。我尝试调用AsyncStorage.clear()
,然后停止应用程序并重新启动它,但这也不起作用。这怎么可能?它在哪里存储数据
值得一提的是,在我测试过的大多数设备(包括Android和iOS)上,它都能正常工作几天,没有任何问题,但在一台Android设备上,尤其是在一台Android设备上,它每天或两天都会发生一次。我已经两次能够使用React本机调试器中的“Clear Async storage”来修复它,但现在即使这样似乎也无法修复它
因此,以下是我的问题:
appsync metadata
中有缓存的快照,但当我清除所有异步存储时,它们肯定也应该被删除 "apollo-client": "^2.5.1",
"aws-amplify": "^1.1.27",
"aws-amplify-react-native": "^2.1.11",
"aws-appsync": "^1.7.2",
"aws-appsync-react": "^1.2.7",
"expo": "^33.0.0",
"graphql": "^14.3.0",
"graphql-tag": "^2.10.1",
"react": "16.8.3",
"react-apollo": "^2.5.8",