【问题标题】:Apollo-client State management cache is not updating automatically after save and delete operationApollo-client 状态管理缓存在保存和删除操作后不会自动更新
【发布时间】:2020-09-14 15:58:15
【问题描述】:

我正在使用 apollo-client 进行 graphql 调用,并在包 apollo-client 中添加了状态管理。在graphql模块中,将InMemoryCache分配给缓存变量并导出客户端变量。将客户端变量导入组件中,因此在执行默认get调用后数据在client.cache.data中可用,但我想在保存和删除graphql操作成功后更新客户端缓存回调

这是我的 graphql.module.ts:

    import {NgModule} from '@angular/core';
    import {ApolloModule, APOLLO_OPTIONS} from 'apollo-angular';
    import { ApolloClient } from 'apollo-client';
    import {InMemoryCache} from 'apollo-cache-inmemory';
    import { HttpLink } from 'apollo-link-http';

    const cache = new InMemoryCache();
    const link = new HttpLink({
        uri:'https://api.graph.cool/simple/v1/ciyz901en4j590185wkmexyex'   
    });

    export var client = new ApolloClient({
      cache,
      link
    });
 @NgModule({ 
 })

和我的服务调用实现

client
      .query({
        query: gql`
        {         
          fORoomTypes()
          {
            nodes
            {
              roomTypeId
              roomType
              ratSingle
              ratDouble
              ratExtra
              statu
            }
          }
        }        
      `,
      })
      .then(result => {      
        callback(result);
      });    

回调client.cache.data包含数据后,我想用缓存查询调用这个数据,我想自动更新缓存 这是我的保存服务实现

  const post = gql`
      mutation
      {
        saveRtype(rt:
          {
            rty:
            {            
              rt:"Club room"
              rat:4000
              cchub:4500
              ext:800
              statu:1             
            }               
            traCheck:1
          }
          )
      }
    `
    client.mutate({
      mutation: post
    }).then((data) => {
      callback(data)
    });

【问题讨论】:

    标签: apollo-client


    【解决方案1】:

    我只使用了带有 React 的 apollo 客户端,但希望能阐明它是如何工作的。为了“自动”发生这种情况,您需要在突变后调用 refetchQueries 以重新获取 fORoomTypes,或者手动更新缓存。我注意到您的回复没有返回 id 属性,那么它怎么知道要更新哪个?如果有不叫“id”的标识符,则在this documentation之后注册。

    这里是您想要的一般文档的链接

    https://www.apollographql.com/docs/angular/features/cache-updates/

    【讨论】:

    • 嘿,这也在调查,只是想指出两个链接都已过期。
    猜你喜欢
    • 2021-08-23
    • 2022-11-11
    • 2018-09-11
    • 2019-07-06
    • 2020-10-11
    • 2020-10-14
    • 2018-07-07
    • 2019-09-24
    • 2021-04-18
    相关资源
    最近更新 更多