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"
      }
    ]
  }
}