我正在使用 graphql_flutter 包,遇到了似乎是缓存问题的问题。即使将
下面是我的 graphql 客户端设置以及我用于向服务器发送查询的自定义方法(它获取用户收藏的项目)。我已经查看了 官方文档 中的策略,并认为我的设置是正确的。以下是问题(以及复现步骤):
FetchPolicy
设置为 noCache
,客户端仍会将缓存数据从一个用户传递到另一个用户。下面是我的 graphql 客户端设置以及我用于向服务器发送查询的自定义方法(它获取用户收藏的项目)。我已经查看了 官方文档 中的策略,并认为我的设置是正确的。以下是问题(以及复现步骤):
- 我使用Amplify Cognito进行身份验证,使用测试用户帐户登录我的应用程序,并使用mutation请求将一些项目添加到用户的收藏夹列表中。
- 然后,我导航到“收藏夹”摘要页面,在该页面中调用下面概述的
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);
}
2021年8月26日更新:
我已经将身份验证迁移到Firebase上,错误不再发生。不确定身份验证包是否是原因还是只是相关性,但这不再是问题。