【发布时间】:2019-02-04 11:18:14
【问题描述】:
我在后端使用 graphql 和 Apollo 进行调用。在 ngOnInit 中,我订阅了一个可观察的 Apollo 查询来检索所有项目,它工作正常,我添加了一个项目,然后转到另一个组件并返回,以便再次调用 ngOnInit 并从服务器获取新项目列表(之后添加一个项目),但它带来了相同的列表(添加之前)。如果我刷新页面,我会得到添加了新项目的新列表。我尝试取消订阅 onDestroy 但仍然没有运气。我尝试使用 watchQuery,但显然我的 Apollo 版本没有使用 Apollo anguoar 0.11.0 的 valueChanges,这是唯一适用于我的 angular 4 项目的版本。
【问题讨论】:
-
可能缓存有问题。尝试根据当前时间在您的 graphql 请求中添加一个参数。像 &time=Date.now().toString() 这样的东西。即使您的 graphql 不使用此参数。它允许强制 Apollo 提出新的请求并获得真实的结果。
-
感谢您的评论,是的,这是缓存的问题,我在 ngOnDestroy() 中对我的 apollo 客户端执行了 client.resetStore() 并成功了。如果这是一个答案,我会将其标记为解决方案,那么您解决问题的方法肯定比我的好。
-
我可以回答,您可以将其标记为解决方案。 ^^
-
当然,继续!
-
这是克服问题的有趣方法。但是我很好奇这个版本的 Apollo angular 是否不支持 fetchPolicy?
标签: angular rxjs graphql apollo