我正在跟踪this guide,以使用Ruby后端学习GraphQL,并且在“查询返回链接”部分中,有以下代码:
# defines a new GraphQL type
Types::LinkType = GraphQL::ObjectType.define do
# this type is named `Link`
name 'Link'
# it has the following fields
field :id, !types.ID
field :url, !types.String
field :description, !types.String
end
我知道感叹号只是一个“非”运算符,但是有人可以在这里解释它的目的吗?
答案 0 :(得分:2)
这是必填(不可为空)字段。的实现:
字符串!表示该字段不可为空,这意味着GraphQL服务承诺在查询该字段时始终为您提供一个值。在类型语言中,我们将用感叹号表示。
https://graphql.org/learn/schema/#object-types-and-fields
似乎已被关键字语法取代:
field :handle, String, null: false
答案 1 :(得分:1)
”! GraphQL中的标记指定该字段不可为空。在您的示例中,id,url,description等字段均不能为NULL。
field :id, !types.ID
field :url, !types.String
field :description, !types.String
如果用于列表中,其含义稍有不同。
[Int]! :列表不能为NULL。如果传递“ null”,则可接受“ [1、2,null]”,这将是一个错误。 [Int!]:列表的内容不能为NULL。它将接受“空”列表,但“ [1、2,空]”将导致错误。