翻译进度
2
分块数量
2
参与人数

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(仅当该字段为空时,请参阅下面的非空字段)。

Ellison 翻译于 4个月前

非空字段

默认情况下,在 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)。

有关详细信息,请阅读 数据提取 部分。

Ellison 翻译于 4个月前

本文章首发在 Laravel China 社区
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

参与译者:2
讨论数量: 0
发起讨论


暂无话题~