Lists 和 Non-Null
列表
graphql-php 提供了对列表的内置支持。为了创建列表类型 - 用 GraphQL\Type\Definition\Type::listOf()
修饰符换行现有类型:
<?php
namespace MyApp;
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Definition\ObjectType;
$userType = new ObjectType([
'name' => 'User',
'fields' => [
'emails' => [
'type' => Type::listOf(Type::string()),
'resolve' => function() {
return ['jon@example.com', 'jonny@example.com'];
}
]
]
]);
预计这些字段的解析器会返回 PHP 的内置 Traversable 接口的 数组 或实例(默认情况下也允许为 null)。
如果返回的值不是这些类型之一 - graphql-php 会将错误添加到结果中,并将字段值设置为 null(仅当该字段为空时,请参阅下面的非空字段)。
非空字段
默认情况下,在 GraphQL 中,每个字段可以有一个空值。要指示某个字段总是返回非空值 - 使用 GraphQL\Type\Definition\Type::nonNull()
修饰符:
<?php
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Definition\ObjectType;
$humanType = new ObjectType([
'name' => 'User',
'fields' => [
'id' => [
'type' => Type::nonNull(Type::id()),
'resolve' => function() {
return uniqid();
}
],
'emails' => [
'type' => Type::nonNull(Type::listOf(Type::string())),
'resolve' => function() {
return ['jon@example.com', 'jonny@example.com'];
}
]
]
]);
如果非空字段的解析器返回 null,graphql-php 将添加一个错误结果并从输出中排除整个对象(一个错误将冒泡到第一个可为 null 的父字段,该字段将设置为 null)。
有关详细信息,请阅读 数据提取 部分。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。