Query Functions
Query Functionsการจัดการฟิลด์แบบมีเงื่อนไข

การจัดการฟิลด์แบบมีเงื่อนไข

Included in the “Power Extensions” bundle

เพิ่ม meta directives @if และ @unless เข้าไปใน GraphQL schema เพื่อให้สามารถรัน nested directive บนฟิลด์ได้แบบมีเงื่อนไข

@if

@if จะรัน nested directives ก็ต่อเมื่อเงื่อนไขมีค่าเป็น true

ใน query นี้ ผู้ใช้ "Leo" และ "Peter" จะได้รับการแปลงชื่อเป็นตัวพิมพ์ใหญ่ เนื่องจากอยู่ใน array "special user" ในขณะที่ "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 แต่จะรัน nested directives เมื่อเงื่อนไขมีค่าเป็น false

ใน query นี้ ผู้ใช้ "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"
      }
    ]
  }
}