GraphQL 角度阿波罗客户端。从缓存中读取抛出错误,但对服务器的相同查询工作正常

Posted

技术标签:

【中文标题】GraphQL 角度阿波罗客户端。从缓存中读取抛出错误,但对服务器的相同查询工作正常【英文标题】:GraphQL angular apollo-client. Read from cache throw error but the same query to the server works fine 【发布时间】:2020-01-21 07:36:33 【问题描述】:

我正在尝试从已经存在的缓存中请求数据。我已经检查了 Apollo Chrome 插件的使用情况。

      const inCache = this.apollo.getClient().readQuery(
        query: gql`
          query 
            foo(id: "foo0") 
              id
              bar 
                id
              
            
          
        `
      );

错误如下所示:

Myhtml.html:20 ERROR Invariant Violation: Can't find field id on object 
  "barSubResourses": [
    
      "type": "id",
      "generated": false,
      "id": "SubResourse:subResourse3",
      "typename": "SubResourse"
    ,
    
      "type": "id",
      "generated": false,
      "id": "SubResourse:subResourse2",
      "typename": "SubResourse"
    
  ],
  "__typename": "Bar"
.

如果我不包含子资源,则从缓存中读取工作正常 有人知道吗?

【问题讨论】:

【参考方案1】:

终于,我找到了问题的根源。在我的查询中有一个没有Bar id 的查询。我已经仔细检查了 chrome 插件仍然有条形的 id 数据。它看起来像一个不匹配。 无论如何,对于每个查询中的每个实体,似乎都有一条经验法则来询问 id

【讨论】:

以上是关于GraphQL 角度阿波罗客户端。从缓存中读取抛出错误,但对服务器的相同查询工作正常的主要内容,如果未能解决你的问题,请参考以下文章

表达 http:graphql 突变上的 500 错误以在反应中从阿波罗客户端创建用户

反应中的奇怪错误-使用阿波罗/客户端-graphql

如何在没有参数的情况下进行graphql突变? (Vue 阿波罗)

更新nestjs/graphql后没有通过标头

如何在突变后更新阿波罗缓存(使用过滤器查询)

React Native 上的 GraphQL Apollo 类型生成