【问题标题】:Flutter GraphQl client cacheFlutter GraphQl 客户端缓存
【发布时间】:2020-08-30 18:13:47
【问题描述】:

我正在使用 Flutter graphql_client,它的实现几乎与 this example 中的一样

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

abstract class AbstractAdapter {
  Link get httpLink;

 GraphQLClient client;

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

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

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

感谢任何帮助。

【问题讨论】:

    标签: flutter graphql flutter-graphql


    【解决方案1】:

    我发现了问题, 我试图在查询 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);
     }
    }
    

    【讨论】:

      【解决方案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;
        }
      

      【讨论】:

        【解决方案3】:

        你可以在突变完成后使用 FetchPolicy.networkOnly 或 updateCache。

        【讨论】:

          猜你喜欢
          • 2021-12-16
          • 2017-03-18
          • 2012-07-26
          • 2019-04-24
          • 1970-01-01
          • 1970-01-01
          • 2013-02-10
          • 2013-01-04
          • 1970-01-01
          相关资源
          最近更新 更多