Query Functions
Query FunctionsУсловная манипуляция полями

Условная манипуляция полями

Included in the “Power Extensions” bundle

Добавление мета-директив @if и @unless в схему GraphQL для условного выполнения вложенной директивы над полем.

@if

@if выполняет вложенные директивы только в том случае, если условие имеет значение true.

В этом запросе пользователи "Leo" и "Peter" получают имена, преобразованные в верхний регистр, поскольку они входят в массив «особых пользователей», тогда как "Martin" — нет:

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @if(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...что даёт результат:

{
  "data": {
    "users": [
      {
        "name": "LEO"
      },
      {
        "name": "Martin"
      },
      {
        "name": "PETER"
      }
    ]
  }
}

@unless

Аналогично @if, но выполняет вложенные директивы, когда условие равно false.

В этом запросе именно пользователь "Martin" получает имя, преобразованное в верхний регистр, тогда как остальные — нет:

query {
  users {
    name
      @passOnwards(as: "userName")
      @applyField(
        name: "_inArray"
        arguments: {
          value: $userName
          array: ["Leo", "John", "Peter"]
        }
        passOnwardsAs: "isSpecialUser"
      )
      @unless(
        condition: $isSpecialUser
      )
        @strUpperCase
  }
}

...что даёт результат:

{
  "data": {
    "users": [
      {
        "name": "Leo"
      },
      {
        "name": "MARTIN"
      },
      {
        "name": "Peter"
      }
    ]
  }
}