Есть способ получить что-то условно с 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)
}
}
Таким образом, если $withFriends равно true, будут выбраны только name и friends. Если это false, будут выбраны только name и appearsIn.