在查询上遇到子选择,但是存储没有对象引用 Apollo Link State

Posted

技术标签:

【中文标题】在查询上遇到子选择,但是存储没有对象引用 Apollo Link State【英文标题】:Encountered a sub-selection on the query, but the store doesn't have an object reference Apollo Link State 【发布时间】:2019-03-13 09:13:35 【问题描述】:

这是我从服务器获取所有数据的主要查询。

那我想把它设置为 Apollo 链接状态。

要设置链接状态,这是我的解析器。

这是我获取先前缓存状态的客户端/缓存查询。

我不知道我错过了什么。

ApolloError.js:37 Uncaught (in promise) 错误:网络错误: 查询时遇到子选择,但店铺没有 对象引用。这在正常使用期间绝不应该发生,除非 您有直接操作商店的自定义代码;请 提出问题。

【问题讨论】:

我面临同样的问题。不知道为什么。你找到解决办法了吗? 这里一样,不知道什么时候开始出现这个错误 我也遇到了一个非常相似的问题。它似乎不知从何而来。你找到解决方案了吗? 这里一样,突然出现 在节点 > 10 上遇到同样的问题,切换到 8 一切正常。 【参考方案1】:

此错误可能是由于apollo-cache-inmemory 软件包版本而发生的。尝试将软件包更新到最新版本:

npm update apollo-cache-inmemory

这个 github 线程正在尝试跟踪问题并且更新包似乎工作得很好:https://github.com/apollographql/apollo-client/issues/4125

【讨论】:

【参考方案2】:

您可能有一个查询设置来获取嵌套对象,但您没有从该嵌套对象请求任何内容。

在本例中,hero 有两个属性,name 类型为 stringultimateAbility 类型为 AbilityAbilitynamestringcooldownnumber

考虑到这一点,以下可能会给您该错误,因为我们正在请求 ultimateAbility(我们的嵌套对象),但我们没有告诉图表我们想要从中得到什么:


  hero 
    name
    ultimateAbility
  

正确的方法是从 ultimateAbility 中添加您想要的道具:


  hero 
    name
    ultimateAbility 
      name
    
  

我的背景:我最近经历了这件事,在挖掘了很多 PR 之后,我的团队确定了这一点。

【讨论】:

以上是关于在查询上遇到子选择,但是存储没有对象引用 Apollo Link State的主要内容,如果未能解决你的问题,请参考以下文章

生产库中遇到mysql的子查询

SQL - 子查询和外部表之间的关系

选择语句,但表是子查询?

sql学习笔记2

CoreData 查询最初在子对象上返回零休息 - 但在退出所有数据后

如何在 SQL Server 中的 UPDATE 查询的子查询中引用表变量