如何查询 InMemoryCache 中的所有实体?

How to query all entities from InMemoryCache?

我正在尝试从我的 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 作为参数的例子。

我想你想要的是 @connection 指令。这将允许您在没有 limit/offset 参数的情况下缓存您的实体查询。

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

使用同一连接进行连续调用应该return 来自该键的所有实体。

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