GraphQL 查询在一个字段上运行良好,但在第二个字段上出错?

Posted

技术标签:

【中文标题】GraphQL 查询在一个字段上运行良好,但在第二个字段上出错?【英文标题】:GraphQL query works fine for one field but errors on the second? 【发布时间】:2018-07-02 11:07:18 【问题描述】:

我正在使用 Apollo Client 2。我得到的结果对我来说似乎很奇怪,但我是 GraphQL 的新手。

我设置了一个包含 2 个字段的简单架构。当我查询其中一个字段时,它可以找到但另一个返回错误:

架构:

type Query 
    hi: String
    groups: [Group]


type Group 
    name: String
    test: String

解析器:

Query: 
    hi() 
        return 'howdy';
    ,
    groups() 
        // Here I'm mocking a database call 
        return [ name: '1', test: 'test 1' ,  name: '2', test: 'test 2' ];
    ,
,

在 GraphiQL 中,此查询有效:


  groups 
    name
  

结果:


 "data": 
    "groups": [
      
        "name": "1"
      ,
      
        "name": "2"
      
    ]
  

但是当我查询测试字段时:


  groups 
    test
  

我收到一个错误:


  "errors": [
    
      "message": "Cannot query field \"test\" on type \"Group\".",
      "locations": [
        
          "line": 3,
          "column": 5
        
      ]
    
  ]

【问题讨论】:

您打印的结果似乎不是来自您的解析器。在您的解析器中,您返回名称:“1”,但结果显示 Kickboxing。如果不只是为了这个例子,也许你没有调用同一个服务器? ..第二个来源没有test 字段? 对不起,这是一个错误。我开始使用实际的数据库调用,然后在调试时模拟调用。我忘了更新我的问题,但我现在已经完成了。 您是否尝试刷新 GraphiQL 页面? 【参考方案1】:

我只需要刷新 GraphiQL 页面。呵呵!

更新 - 我又遇到了这个问题,这次不得不在隐身窗口中运行 graphiql。即使您刷新,浏览器缓存似乎也是一个问题。

更新 2 - 这可能是 Meteor 特定的问题,但我需要进一步编辑一个 javascript 文件,以便在我的解析器和架构中进行更改以获取。似乎有很多缓存类型的问题,但我不知道这是 Meteor、Apollo 还是 GraphQL。

【讨论】:

以上是关于GraphQL 查询在一个字段上运行良好,但在第二个字段上出错?的主要内容,如果未能解决你的问题,请参考以下文章

尽管存在数据,但在 GraphQL 查询中日期字段返回为空

类型上不存在 Graphql 字段

MS Access VBA 调用子程序在第一遍有效,但在第二遍无效

MySQL 查询在 /tmp 中使用了 10G 的空间,并因“Errcode:28 - 设备上没有剩余空间”而死,但在本地运行良好

GraphQL 突变和查询:无法读取未定义的属性

如何在带有 gatsby 的 graphql 查询中使用正则表达式