Query Functions
Query FunctionsBedingte Feldmanipulation

Bedingte Feldmanipulation

Included in the “Power Extensions” bundle

Hinzufügen der Meta-Direktiven @if und @unless zum GraphQL-Schema, um eine verschachtelte Direktive auf einem Feld bedingt auszuführen.

@if

@if führt seine verschachtelten Direktiven nur aus, wenn eine Bedingung den Wert true hat.

In dieser query werden die Namen der Nutzer "Leo" und "Peter" in Großbuchstaben umgewandelt, da sie im Array der „Special Users" enthalten sind, während "Martin" nicht umgewandelt wird:

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

...mit folgendem Ergebnis:

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

@unless

Ähnlich wie @if, führt die verschachtelten Direktiven jedoch aus, wenn die Bedingung false ist.

In dieser query wird der Name des Nutzers "Martin" in Großbuchstaben umgewandelt, während die anderen nicht umgewandelt werden:

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

...mit folgendem Ergebnis:

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