graphql - 在 GraphQL 中是否可以构造一个查询以期望一个整数或一个整数数组?
问题描述
我有一种感觉,它必须是强类型的,一种或另一种方式,并且很好奇我是否可以使用相同的查询来完成两者,我想要这样的东西:
{
accounts(accountId: [1,2,3]) {
...
}
}
并且还能够进行同样的调用,将其视为普通 int:
{
accounts(accountId: 1) {
...
}
}
解决方案
List 是一种包装类型,它包装了另一种类型,但它本身就是一种不同的类型。所以Int
和[Int]
是两种不同的类型。字段或参数必须只有一种类型,因此它只能具有类型Int
或类型[Int]
——不能同时具有两者。
但是,您可以利用 GraphQL 如何强制 List 输入值。从规范:
如果作为输入传递给列表类型的值不是列表且不是空值,则输入强制的结果是大小为 1 的列表,其中单个项目值是列表项类型的输入强制的结果在提供的值上(注意这可能递归地应用于嵌套列表)。
换句话说,如果 的类型accountId
是[Int]
(或[Int!]
或[Int!]!
),客户端仍然可以将单个整数作为值而不是数组传递。在这种情况下,该值将被强制转换为具有单个值(传入的那个)的数组。
推荐阅读
- sql - Oracle中如何复用部分SQL代码
- javascript - 如何解决代理后面的 npm install 期间的连接问题?
- oauth - 使用 OAuth2 和 OpenID Connect 进行会话管理/撤销
- node.js - Express.js 应用程序错误:尝试访问某些路由时浏览器卡在加载状态
- python - Jetbrains Pycharm 2019.2 & Win10 WSL:无法同步实际的 python 包
- awk - 将“u”转换为“t”而不更改 FASTA 中的标题
- php - 错误代码:“PP_E_RPS_CERT_NOT_FOUND”。消息:'内部错误:spRPSTicket->ProcessToken 失败
- mlflow - 如何在 mlflow 中添加更多表?
- node.js - Sequlize Postgres id 自动增量不起作用
- python - 使用主键比较 excel 文件并在新数据框中显示差异