如何在 GraphQL Nexus 的数组中定义非空元素?

Posted

技术标签:

【中文标题】如何在 GraphQL Nexus 的数组中定义非空元素?【英文标题】:How to defined non-null elements inside an array in GraphQL Nexus? 【发布时间】:2021-05-05 11:54:07 【问题描述】:

我正在使用 GraphQL Nexus 来实现我的 GraphQL 架构。

我要创建的目标 GraphQL 类型是这样的:

input UserCreateInput 
  email: String!
  name: String
  posts: [PostCreateInput!]!

但是,我不确定如何创建 PostCreateInput 数组,使得 posts元素 也是必需的。

现在这就是我所拥有的:

input UserCreateInput 
  email: String!
  name: String
  posts: [PostCreateInput]!

这是由这个 Nexus 类型定义支持的:

const UserCreateInput = inputObjectType(
  name: 'UserCreateInput',
  definition(t) 
    t.nonNull.string('email')
    t.string('name')
    t.nonNull.list.field('posts', 
      type: 'PostCreateInput',
    )
  ,
)

有没有办法告诉 Nexus 每个数组元素都应该是非空的?

【问题讨论】:

【参考方案1】:

在这种情况下,在list 之后添加nonNull 就足够了。所以类似于以下内容:

const UserCreateInput = inputObjectType(
  name: 'UserCreateInput',
  definition(t) 
    t.nonNull.string('email')
    t.string('name')
    t.nonNull.list.nonNull.field('posts', 
      type: 'PostCreateInput',
    )
  ,
)

【讨论】:

以上是关于如何在 GraphQL Nexus 的数组中定义非空元素?的主要内容,如果未能解决你的问题,请参考以下文章

Nexus GraphQL Prisma 事件字段

如何在类型定义中为 GraphQL 字段定义数组数据类型

Nexus 和 GraphQL:“上下文”类型的根输入路径不存在

在 GraphQL 上查询具有非结构化对象的数组

使用 GraphQL、Nexus 和 Prisma 优化 SQL 查询

React 和 Nexus Graphql 服务器上的 Apollo 客户端出现“必须提供查询字符串”错误