GraphQL 字段 - AWS AppSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GraphQL 字段

字段位于类型范围内,并保存从 GraphQL 服务中请求的值。它们与其他编程语言中的变量非常相似。例如,以下是一个 Person 对象类型:

type Person { name: String age: Int }

此处的字段为 nameage,分别保存 StringInt 值。可以将像上面所示的对象字段作为查询和变更字段(操作)中的输入。例如,请参阅下面的 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 实例。在响应中,每个 Personnameage 值作为单个分隔列表返回:

} "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。不过,在任何案例中,您仍然可能会返回空列表。