首页 > 解决方案 > 是否可以忽略 graphql 中与 @include 一起使用的必需类型

问题描述

使用时是否可以忽略所需的类型(在这种情况下,createCarEvent包含变量$fromas的类型输入String!@include?我尝试使用$fromasString而不是,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
  }

标签: javascriptgraphql

解决方案


GraphQL 无法知道if is$from始终提供,类型声明无法表达(并且您的调用代码无法保证)。$isNeedCreateCarEventtrue

createCarEvent如果您想制作$from$to可选,您最好使用两个单独的突变,一个带有 the和一个没有。

如果这对您来说意味着太多重复(因为查询的其余部分),那么唯一的方法是将参数声明为非 null 并在使用时将空字符串作为虚拟值传递$isNeedCreateCarEvent = false


推荐阅读