@include (иначе или @include (если нет: graphql - PullRequest
0 голосов
/ 14 июня 2019

Как добиться эффекта "else" с помощью директив GQL

Есть способ получить что-то условно с помощью gql , используя @include(if: $withFriends)

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

Но яхотите получить что-то еще, если $withFriends имеет значение false.Я могу добиться этого, передав дополнительную переменную $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)

1 Ответ

1 голос
/ 14 июня 2019

Вы можете использовать директиву @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.

...