Apollo 从缓存中查询对象值

Posted

技术标签:

【中文标题】Apollo 从缓存中查询对象值【英文标题】:Apollo query object values from cache 【发布时间】:2020-06-19 02:24:34 【问题描述】:

我有一个关于从 apollo 中的客户端缓存中查询对象的快速问题。

我有一个这样的初始缓存状态:

cache.writeData(
   data:  value1: true, value2:  test: "123"  
);

我将查询数据附加到组件的容器:

import EditModalComponent from "..";
import gql from "graphql-tag";
import  graphql  from "@apollo/react-hoc";
import  compose, pure  from "recompose";

const QUERY2 = gql`
  query data 
    value2 @client 
      test
    
  
`;

const query2 = graphql(QUERY2, 
  name: "query2"
);

const EditModalWithData = compose(query2, pure)(EditModalComponent);

export default EditModalWithData;

如果我尝试查询 value1,一切正常,但如果我尝试使用上面的查询查询 value2,我只会收到没有任何值的查询响应

这是我在组件道具中收到的响应:

variables: 
refetch: ƒ (variables)
fetchMore: ƒ (fetchMoreOptions)
updateQuery: ƒ (mapFn)
startPolling: ƒ (pollInterval)
stopPolling: ƒ ()
subscribeToMore: ƒ (options)
loading: false
networkStatus: 7
error: undefined
called: true
XXXXXX <- here should be something like: test: "123"

感谢您的帮助!

【问题讨论】:

value1 上没有 test 属性? 对不起我的错误,我的意思是 value2..... 能否展示相关组件代码? 我用容器/组件代码编辑问题 【参考方案1】:

我找到了解决方案。您需要在展位参数后面写入 @client

const QUERY2 = gql`
  query data 
    value2 @client 
      test @client
    
  
`;

【讨论】:

以上是关于Apollo 从缓存中查询对象值的主要内容,如果未能解决你的问题,请参考以下文章

当变量发生变化时,Apollo 客户端缓存不会在查询中更新

Apollo 查询从缓存中获取了错误的数据

缓存对象上的 Apollo 客户端查询重复数据删除

查询后如何更新 Apollo 缓存?

从 apollo 缓存读取查询,查询尚不存在,但所有信息都已存储在缓存中

如何从 Apollo 缓存中查询没有 ROOT_QUERY 上的查询