将嵌套对象写入本地 Apollo 缓存
Posted
技术标签:
【中文标题】将嵌套对象写入本地 Apollo 缓存【英文标题】:Writing nested object to local Apollo cache 【发布时间】:2020-05-02 01:22:49 【问题描述】:我已经看过了:Writing nested object to Apollo client cache
我猜互联网上的其他地方。
所以我要做的就是将一个对象写入 Apollo 缓存中,并将其存储在本地。这是我的设置:
const cache = new InMemoryCache()
const client = new ApolloClient(
uri: '/hasura/v1/graphql',
cache,
credentials: 'include',
)
然后我写这个来初始化缓存,取自:https://www.apollographql.com/docs/react/data/local-state/#querying-local-state
cache.writeData(
data:
todos: [],
visibilityFilter: 'SHOW_ALL',
networkStatus:
__typename: 'NetworkStatus',
id: 1,
isConnected: false,
,
,
)
现在,当我想使用这个查询来查询缓存时:
const lolquery = gql`
visibilityFilter @client
`
const result = cache.readQuery( query: lolquery )
console.log(result)
我可以获得 visibilityFilter 和 todos,但是当我尝试查询 networkStatus 时,即
const lolquery = gql`
networkStatus @client
`
我收到以下错误:
未捕获的不变违规:不变违规:10
谷歌搜索这个错误并没有给我太多答案。
只有我一个人遇到这种情况吗?我是否遗漏了一些非常明显的东西?
【问题讨论】:
【参考方案1】:networkStatus
被初始化为一个对象,因此您必须使用一个或多个字段的子选择来查询它。
networkStatus @client
isConnected
【讨论】:
好吧,哇,真的。我不知道我怎么没有尝试过这个......但我想是因为我的最终目标是获取对象列表/我不知道我是否读过在获取对象时需要执行此规范的任何地方GraphQL。多么令人沮丧……但谢谢!以上是关于将嵌套对象写入本地 Apollo 缓存的主要内容,如果未能解决你的问题,请参考以下文章
在 Apollo GraphQL 中跨本地和远程模式的嵌套数组中建模数据的最佳方法?