首页 > 解决方案 > 在 GraphQL 中是否可以构造一个查询以期望一个整数或一个整数数组?

问题描述

我有一种感觉,它必须是强类型的,一种或另一种方式,并且很好奇我是否可以使用相同的查询来完成两者,我想要这样的东西:

{
  accounts(accountId: [1,2,3]) {
    ...
  }
}

并且还能够进行同样的调用,将其视为普通 int:

{
  accounts(accountId: 1) {
    ...
  }
}

标签: graphqlhotchocolate

解决方案


List 是一种包装类型,它包装了另一种类型,但它本身就是一种不同的类型。所以Int[Int]是两种不同的类型。字段或参数必须只有一种类型,因此它只能具有类型Int 类型[Int]——不能同时具有两者。

但是,您可以利用 GraphQL 如何强制 List 输入值。从规范:

如果作为输入传递给列表类型的值不是列表且不是空值,则输入强制的结果是大小为 1 的列表,其中单个项目值是列表项类型的输入强制的结果在提供的值上(注意这可能递归地应用于嵌套列表)。

换句话说,如果 的类型accountId[Int](或[Int!][Int!]!),客户端仍然可以将单个整数作为值而不是数组传递。在这种情况下,该值将被强制转换为具有单个值(传入的那个)的数组。


推荐阅读