javascript - 是否可以忽略 graphql 中与 @include 一起使用的必需类型
问题描述
使用时是否可以忽略所需的类型(在这种情况下,createCarEvent
包含变量$from
as的类型输入String!
)@include
?我尝试使用$from
asString
而不是,String!
但它导致了异常:
“String”类型的变量“$from”用于预期类型“String!”的位置
$isNeedCreateCarEvent
检查两个变量 ($from
和)是否$to
存在。
mutation rejectBooking(... $from: String, $to: String, $isNeedCreateCarEvent: Boolean!) {
...
createCarEvent(
input: {
...
from: $from
to: $to
}
) @include(if: $isNeedCreateCarEvent) {
...eventItem
}
方案:
input CarEventInput {
...
from: String!
to: String
}
解决方案
GraphQL 无法知道if is$from
始终提供,类型声明无法表达(并且您的调用代码无法保证)。$isNeedCreateCarEvent
true
createCarEvent
如果您想制作$from
和$to
可选,您最好使用两个单独的突变,一个带有 the和一个没有。
如果这对您来说意味着太多重复(因为查询的其余部分),那么唯一的方法是将参数声明为非 null 并在使用时将空字符串作为虚拟值传递$isNeedCreateCarEvent = false
。
推荐阅读
- python - 简单示例如何使用烧瓶重定向日志消息?
- java - JPA - 如何在构造函数中获取自动生成的 id?
- reactjs - React 中最近查看的组件的改进
- c# - 在处理复杂数据模型时使用 DbContextFactory(每个服务方法/操作都有一个新的 DbContext)
- ssl - 将自签名证书添加到 k8s
- .net-core - 使用计算列时在主键中有两列时出错(EF 迁移)
- java - 播放框架 sqlserver 连接错误:com.zaxxer.hikari.pool.PoolBase HikariPool-1 - 驱动程序不支持获取/设置网络超时
- r - 使用 Rdimtools::do.eslpp 在降维中出现错误“不是矩阵”
- python - 如果用户在 dict 中输入匹配键,则打印该值
- asp.net-core - 使用 dotnet watch run 运行项目时如何禁用自动刷新