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)。

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

本文章首发在 LearnKu.com 网站上。

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

原文地址:https://learnku.com/docs/graphql-php/typ...

译文地址:https://learnku.com/docs/graphql-php/typ...

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~