You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL类型定义中如何配置字段返回数组格式

GraphQL 数组类型字段配置方案

GraphQL 中通过方括号[目标类型]的语法定义数组类型,非空标识!的标注位置不同,对应的校验规则也不同,具体调整方式如下:


1. 调整单个产品的类型定义

当前定义的GetAllProducts实际对应单个产品的实体结构,命名存在语义混淆,建议重命名为Product更易维护,同时新增images字符串数组字段:

type Product {
  id: ID!
  title: String
  description: String
  userId: Int
  featured: Int
  isFree: Boolean
  isBlocked: Boolean
  instantBuy: Boolean
  groupsId: String
  # 图片链接字段:字符串数组格式
  images: [String]
}

如果要沿用原有命名GetAllProducts作为单个产品类型,直接在类型内部新增images: [String]字段即可。


2. 配置根查询字段的返回类型

期望getAllProducts接口返回产品对象数组,因此根Query下对应字段的返回值不能是单个产品类型,需要标记为产品类型的数组:

type Query {
  # 返回值用[Product]包裹,标识返回Product对象组成的数组
  getAllProducts: [Product]
}

数组非空规则说明

可以根据业务的实际返回规则,调整非空标识!的位置,不同写法的约束如下:

  • [String]:images字段可以返回null,返回数组时数组内允许存在null值,完全匹配给出的示例结构
  • [String!]:images字段可以返回null,返回数组时数组内每一项都必须是合法字符串,不允许为null
  • [String]!:images字段必须返回数组(不能为null,无数据时返回空数组),数组内允许存在null值
  • [String!]!:images字段必须返回数组,数组内每一项都必须是合法字符串,不允许为null

同理查询字段getAllProducts也可以根据业务需求调整非空约束,比如要求接口永远返回数组、不返回null,就可以写为getAllProducts: [Product]!。


内容的提问来源于stack exchange,提问作者Manimaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:06:19