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

时间:2019-09-20 08:55:32

标签: angular graphql apollo

我正在尝试从已经存在的缓存中请求数据。我已经检查了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 个答案:

答案 0 :(得分:0)

最后,我找到了问题的根源。我的查询中有一个查询没有Bar的ID。我仔细检查了chrome插件是否仍然具有该酒吧的ID数据。看起来不匹配。 无论如何,对于每个查询中的每个实体,似乎都有一个经验法则来询问id