问题描述
我正在使用 graphql_flutter 包,但在缓存中遇到了问题。客户端将缓存数据从一个用户传递给另一个用户,即使 FetchPolicy
设置为 noCache
。
我在下面概述了我的 graphql 客户端设置是什么样的,然后是我用来向服务器发送查询的自定义方法(它获取用户最喜欢的项目)。我查看了 official documentation 中的政策,并相信我的设置是正确的。问题(以及重现步骤)如下:
- 我使用测试用户帐户(使用 Amplify Cognito 用于身份验证)并将一些项目添加到用户的收藏夹列表中(带有 变异请求)。
- 然后我导航到“收藏夹”摘要页面,
我调用下面概述的
fetchFavoritesData
方法来获取 用户收藏的所有项目。很有魅力。 - 然后我注销并创建一个全新的用户帐户并使用这个新用户登录(即不同的 访问令牌和所有)。
- 在向这个新用户的收藏夹列表添加任何项目之前,如果我检查他们的“收藏夹”摘要页面,该页面调用
fetchFavoritesData
方法并应返回 null(因为该用户尚未添加任何项目),结果实际上返回第一个用户收藏的确切项目。奇怪。
一直在玩策略,尝试不同的获取策略等等,但问题仍然存在。我是不是遗漏了什么(抱歉——这个包是全新的)或者这可能是一个错误?
GraphQLClient client = GraphQLClient(
link: link,cache: GraphQLCache(),// declared cache here because I'm using the client for a few different requests,some where caching is preferred.
);
}
Future<void> fetchFavoritesData() async {
final QueryOptions options = QueryOptions(
document: gql(queryFavoritesData),// only return result from network
fetchPolicy: FetchPolicy.noCache,// ignore cache data if any
cacheRereadPolicy: CacheRereadPolicy.ignoreAll,);
final QueryResult result = await GraphQLConfiguration.client.query(options);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)