【问题标题】:How to correctly declare a GraphQL query without parameters.如何正确声明不带参数的 GraphQL 查询。
【发布时间】:2019-03-17 02:56:12
【问题描述】:

我正在使用 vs code + graphql-cli 来验证和检查模式。在以下声明中(在 graphql 模式文件中):

type Query {
  users(): Int
}

上面的 users 声明被标记为 en 错误,但服务器不会产生任何问题(或警告) - 它只是 vs 代码和 graphql lint 将其报告为错误:

2:9 Syntax Error: Expected Name, found )  undefined

如果我在查询中添加一个参数,例如:

type Query {
  users(n: Int): Int
}

那么vs code或者graphql-cli都没有报问题。 如何正确声明不带参数的 graphql 查询。

【问题讨论】:

标签: visual-studio-code graphql lint


【解决方案1】:

您在架构中指定的查询的行为与特定类型上的任何其他字段一样(主要区别在于它们的类型与特定操作相关联)。如果您不想为特定字段声明任何参数,则只需完全省略括号即可。查询和突变也是如此:

type Query {
  users: Int
}

来自规范:

从概念上讲,字段是返回值的函数,并且偶尔会接受改变其行为的参数。这些参数通常直接映射到 GraphQL 服务器实现中的函数参数。

所以值得指出的是,任何类型的字段都可以有参数。例如,查询可能如下所示:

query UsersQuery {
  users {
    name
    posts (onlyNew: true) {
      title
    }
  }
}

【讨论】:

  • query with one optional parameter 怎么样?应该如何定义以使users(n: 100)users() 都有效?
  • 参数默认可以为空。后者永远不会有效,因为它是无效的语法。如果不传入任何参数,则需要省略括号。
猜你喜欢
  • 2021-04-03
  • 2019-09-19
  • 1970-01-01
  • 2019-10-20
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
相关资源
最近更新 更多