本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GraphQL 字段
字段位于类型范围内,并保存从 GraphQL 服务中请求的值。它们与其他编程语言中的变量非常相似。例如,以下是一个 Person
对象类型:
type Person { name: String age: Int }
此处的字段为 name
和 age
,分别保存 String
和 Int
值。可以将像上面所示的对象字段作为查询和变更字段(操作)中的输入。例如,请参阅下面的 Query
:
type Query { people: [Person] }
people
字段从数据来源中请求所有 Person
实例。在 GraphQL 服务器中添加或检索 Person
时,您可以要求数据采用您的类型和字段的格式,即,架构中的数据结构决定了如何在响应中设置其结构:
} "data": { "people": [ { "name": "John Smith", "age": "50" }, { "name": "Andrew Miller", "age": "60" }, . . . ] } }
字段在设置数据结构方面发挥着重要作用。下面介绍了几个额外的属性,可以将其应用于字段以进行更多自定义。
列表
列表返回指定类型的所有项目。可以使用方括号 []
将列表添加到字段类型中:
type Person { name: String age: Int } type Query { people: [Person] }
在 Query
中,Person
两侧的方括号表示您希望以数组形式从数据来源返回所有 Person
实例。在响应中,每个 Person
的 name
和 age
值作为单个分隔列表返回:
} "data": { "people": [ { "name": "John Smith", # Data of Person 1 "age": "50" }, { "name": "Andrew Miller", # Data of Person 2 "age": "60" }, . # Data of Person N . . ] } }
您不限于使用特殊对象类型。您还可以在常规对象类型的字段中使用列表。
非 Null 值
非 Null 值表示在响应中不能为 Null 的字段。您可以使用 !
符号将字段设置为非 Null:
type Person { name: String! age: Int } type Query { people: [Person] }
name
字段不能明确为 Null。如果您要查询数据来源并为该字段提供 Null 输入,则会引发错误。
您可以组合使用列表和非 Null 值。比较以下查询:
type Query { people: [Person!] # Use case 1 } . . . type Query { people: [Person]! # Use case 2 } . . . type Query { people: [Person!]! # Use case 3 }
在使用案例 1 中,列表不能包含 Null 项目。在使用案例 2 中,列表本身不能设置为 Null。在使用案例 3 中,列表及其项目不能为 Null。不过,在任何案例中,您仍然可能会返回空列表。