2

我正在使用 Flutter graphql_client ,它的实现与本示例中的内容非常相似

我的客户端创建如下所示:

abstract class AbstractAdapter {
  Link get httpLink;

 GraphQLClient client;

 AbstractAdapter() {
   client = GraphQLClient(cache: InMemoryCache(), link: httpLink);
 }

 Future<QueryResult> query(QueryOptions options) {
   return client.query(options);
 }
}

它工作得很好,但问题在于缓存如果我两次发送相同的突变,它会返回缓存的结果而不是再次发送!

感谢任何帮助。

4

3 回答 3

2

你必须在 QueryOptions 和 MutationOptions 中使用 FetchPolicy.networkOnly , fetchPolicy 属性

      String query, Map<String, dynamic> variables) async {
    QueryOptions options = QueryOptions(
        documentNode: gql(query),
        variables: variables,
        fetchPolicy: FetchPolicy.networkOnly);

    final result = await _client.query(options);

    return result;
  }

Future<QueryResult> performMutation(
      String query, Map<String, dynamic> variables) async {
    MutationOptions options = MutationOptions(
        documentNode: gql(query),
        variables: variables,
        fetchPolicy: FetchPolicy.networkOnly);

    final result = await _client.mutate(options);
    return result;
  }
于 2021-01-08T08:12:37.137 回答
0

变异完成后,您可以使用 FetchPolicy.networkOnly 或 updateCache。

于 2021-05-21T13:26:56.303 回答
0

我发现了问题,我试图在查询 api 上发送突变,这将返回最后一个缓存的响应,这对突变不利。

我已经向我的 GraphQL 适配器添加了带有 MutationOptions 的突变查询,如下所示:

abstract class AbstractAdapter {
Link get httpLink;

GraphQLClient client;

AbstractAdapter() {
  client = GraphQLClient(cache: InMemoryCache(), link: httpLink);
}

Future<QueryResult> query(QueryOptions options) {
  return client.query(options);
 }

Future<QueryResult> mutate(MutationOptions options) {
  return client.mutate(options);
 }
}
于 2020-05-17T12:56:08.193 回答