【问题标题】:How to query all entities from InMemoryCache?如何从 InMemoryCache 中查询所有实体?
【发布时间】:2018-01-16 01:36:12
【问题描述】:

我正在尝试从我的 apollo 本地缓存 (InMemoryCache) 中查询所有实体,但没有成功。

这是我的操作方式。

query EntityList($limit: Int!, $offset: Int!) {
  entities(
    limit: $limit,
    offset: $offset
  ) {
    __typename
    EntityId
  }
}

有了这个查询:没问题。 但后来,我想从缓存中查询所有实体,不带任何参数。

query LocalEntityList {
  entities {
    EntityId
  }
}

这个简单的代码触发了一个错误 Can't find field entities on object (ROOT_QUERY)....

通过documentation site,我了解到我需要在InMemoryCache 对象上使用cacheResolvers 选项。
但是没有不传递 id 作为参数的例子。

【问题讨论】:

    标签: apollo react-apollo apollo-client


    【解决方案1】:

    我认为您想要的是 @connection 指令。这将允许您在没有限制/偏移参数的情况下缓存您的实体查询。

    query EntityList($limit: Int!, $offset: Int!) {
      entities (
        limit: $limit,
        offset: $offset
      ) @connection(key: "EntityList_entities") {
        __typename
        EntityId
      }
    }
    

    使用同一连接进行连续调用应返回该键中的所有实体。

    query LocalEntityList {
      entities @connection(key: "EntityList_entities") {
        EntityId
      }
    }
    

    【讨论】:

    • 非常感谢@imranolas,你让我走上了正轨。我也必须在我的本地查询上设置所需的参数,它也适用于缓存策略选项:{ notifyOnNetworkStatusChange: true, fetchPolicy: 'cache-only', variables: { offset: 0, limit: 0 } }
    猜你喜欢
    • 2021-04-21
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 2015-04-25
    • 1970-01-01
    相关资源
    最近更新 更多