Flutter:graphql_flutter FetchPolicy.noCache 返回来自不同用户的缓存数据

问题描述

我正在使用 graphql_flutter 包,但在缓存中遇到了问题。客户端将缓存数据从一个用户传递给另一个用户,即使 FetchPolicy 设置为 noCache

我在下面概述了我的 graphql 客户端设置是什么样的,然后是我用来向服务器发送查询自定义方法(它获取用户最喜欢的项目)。我查看了 official documentation 中的政策,并相信我的设置是正确的。问题(以及重现步骤)如下:

  1. 我使用测试用户帐户(使用 Amplify Cognito 用于身份验证)并将一些项目添加用户的收藏夹列表中(带有 变异请求)。
  2. 然后我导航到“收藏夹”摘要页面, 我调用下面概述的 fetchFavoritesData 方法获取 用户收藏的所有项目。很有魅力。
  3. 然后我注销并创建一个全新的用户帐户并使用这个新用户登录(即不同的 访问令牌和所有)。
  4. 在向这个新用户的收藏夹列表添加任何项目之前,如果我检查他们的“收藏夹”摘要页面,该页面调用 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 (将#修改为@)