@@ -49,15 +49,15 @@ type Starship {
49
49
50
50
您可以将 GraphQL 查询中的每个字段视为返回下一个类型的上一个类型的函数或方法。事实上,这正是 GraphQL 的工作原理。每个类型的每个字段都由称为解析器的函数支持,该函数由 GraphQL 服务器开发人员提供。当一个字段被执行时,相应的解析器被调用以产生下一个值。
51
51
52
- 如果字段产生标量值,例如字符串或数字,则执行完成。但是,如果一个字段产生一个实体对象,则该查询将继续执行对应字段的解析器函数,直到生成标量值。 GraphQL 查询始终以标量值结尾。
52
+ 如果字段产生标量值,例如字符串或数字,则执行完成。但是,如果一个字段产生一个实体对象,则该查询将继续执行对应字段的解析器函数,直到生成标量值。GraphQL 查询始终以标量值结尾。
53
53
54
54
55
55
56
56
## 根字段&解析器函数
57
57
58
58
每一个 GraphQL 服务端应用的顶层,必有一个类型代表着所有 GraphQL API的入口,我们将他称之为根类型或者查询类型。
59
59
60
- 在这个例子中查询类型提供了一个字段 ` human ` , 并且接受一个参数 ` id ` 。解析器函数请求了数据库并通过构造函数染回了 ` Human ` 对象
60
+ 在这个例子中查询类型提供了一个字段 ` human ` , 并且接受一个参数 ` id ` 。解析器函数请求了数据库并通过构造函数染回了 ` Human ` 对象。
61
61
62
62
```
63
63
Query: {
@@ -89,7 +89,7 @@ human(obj, args, context) {
89
89
90
90
` context ` 提供了一个数据库访问对象用来通过查询中传递的参数 ` id ` 来查询数据,因为从数据库拉去数据的过程是一个异步操作,该方法返回了一个 [ Promise] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise ) 对象,在 JavaScript 语言中 Promise 对象用来返回异步操作,但这个概念在各种语言中都有提及,比如 Futures ,Tasks 或者 Defferred 。当数据库返回查询结果,我们就能通过构造函数返回一个新的 ` Human ` 对象。
91
91
92
- 这里要注意的是,只有解析器函数能感知到 Promise ,GraphQL 查询只关注 ` human ` 字段是否返回,在执行期间如果异步操作没有完成,则 GraphQL 会一直等待下去,因此在这个环节需要关注异步处理上的优化。
92
+ 这里要注意的是,只有解析器函数能感知到 Promise,GraphQL 查询只关注 ` human ` 字段是否返回,在执行期间如果异步操作没有完成,则 GraphQL 会一直等待下去,因此在这个环节需要关注异步处理上的优化。
93
93
94
94
## 标准解析器
95
95
@@ -123,7 +123,7 @@ Human: {
123
123
124
124
请注意,我们的类型系统声明 ` appearsIn ` 字段将返回具有已知值的枚举值,但是此函数返回数字!实际上,如果我们查看结果,我们将看到正在返回适当的枚举值。这是怎么回事?
125
125
126
- 这是标量强制的一个例子。类型系统知道预期的内容,并将将解析器函数返回的值转换为维护 API 合同的内容。在这种情况下,可能在我们的服务器上定义了一个枚举类型,但解析器在内部使用 4,5 和 6 的整数类型,但在 GraphQL 类型系统中将它们表示为枚举值,如果类型不匹配将返回null ,并提示错误。
126
+ 这是标量强制的一个例子。类型系统知道预期的内容,并将将解析器函数返回的值转换为维护 API 合同的内容。在这种情况下,可能在我们的服务器上定义了一个枚举类型,但解析器在内部使用 4,5 和 6 的整数类型,但在 GraphQL 类型系统中将它们表示为枚举值,如果类型不匹配将返回 null ,并提示错误。
127
127
128
128
## 列表解析器
129
129
@@ -143,7 +143,7 @@ Human: {
143
143
144
144
解析器函数在这个字段中返回了一个 Promise 对象,它返回一个 Promises 列表。 ` Human ` 对象具有他们正在驾驶的 ` Starships ` 的 ids 列表,但是我们需要通过这些 id 来获得真正的 Starship 对象。
145
145
146
- GraphQL 将在同步执行这些 Promise ,当返回一个对象列表,它将继续同步加载每个这些对象的 ` name ` 字段。
146
+ GraphQL 将在同步执行这些 Promise,当返回一个对象列表,它将继续同步加载每个这些对象的 ` name ` 字段。
147
147
148
148
## 产生结果
149
149
0 commit comments