【问题标题】:Single value vs Array in GraphQL Enum input typesGraphQL 枚举输入类型中的单值与数组
【发布时间】:2021-07-06 12:10:03
【问题描述】:

如何在 GraphQL 中定义一个接受单个枚举值或一组值的输入类型?

根据GitHub GraphQL API

{
  securityVulnerabilities(first: 3, ecosystem: RUBYGEMS) {
    nodes {
      advisory {
        description
      }
    }
  }
}

但我认为数组可能很好,因为用户可以跨生态系统进行搜索。

{
  securityVulnerabilities(first: 3, ecosystem: [RUBYGEMS, NPM]) {
    nodes {
      advisory {
        description
      }
    }
  }
}

【问题讨论】:

  • 这是一本好书graphql.org/learn/schema
  • 您是否在问如何将枚举值数组而不是单个枚举值作为参数传递给现有端点,如 Github 的?

标签: graphql


【解决方案1】:

您可以通过将输入值定义为您定义的Enum 的数组[] 来做到这一点,类似于:

enum MyEnum {
  RUBYGEMS
  NPM
}

type Query {
  securityVulnerabilities(ecosystem: [MyEnum!]): MyReturnObject
}

然后你可以像这样查询它:

{
  securityVulnerabilities(ecosystem: [RUBYGEMS, NPM]) {
    ....
  }
}

它适用于数组或单个值:

{
  securityVulnerabilities(ecosystem: RUBYGEMS) {
    ....
  }
}

GraphQL spec 解释如下:

如果作为输入传递给列表类型的值是不是列表而不是 null 值,则输入强制的结果是一个大小列表 一个 [...]

希望对你有帮助。

【讨论】:

  • 我在一些说明中进行了编辑,说明它适用于两个用例(数组 单个值),并引用规范来解释它的用途。如果您觉得此修改过大或违背您的初衷,请随时回滚。
猜你喜欢
  • 2019-01-07
  • 2022-08-02
  • 2018-04-08
  • 2012-09-16
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2011-08-03
  • 2021-09-17
相关资源
最近更新 更多