"else" 使用 GraphQL

"else" with GraphQL

如何使用 GQL 指令实现“else”效果

有一种方法可以通过 gql 使用 @include(if: $withFriends)

有条件地获取某些内容
query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
  }
}

但如果 $withFriends 为假,我想获取其他内容。我可以通过传递附加变量 $notWithFriends

来实现它
query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
    appearsIn @include(if: $notWithFriends)
  }
}

问题:是否可以避免使用额外的变量?

像这样:@include(else: $withFriends)@include(ifNot: $withFriends)@include(if: !$withFriends)

您可以使用 @skip 指令,它的工作方式与 @include 相反——如果 if 参数是 true,它会从选择集中忽略该字段:

query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
    appearsIn @skip(if: $withFriends)
  }
}

这样,如果$withFriendstrue,则只会选择namefriends。如果是false,则只会选择nameappearsIn