การเสริมขยาย Schema
การเสริมขยาย Schemaประเภท 'Enum String'

ประเภท 'Enum String'

ข้อมูลบางประเภทสามารถมีค่าได้เฉพาะจากชุดที่กำหนดไว้ล่วงหน้า ซึ่งโดยหลักการแล้วควรจะนำมาจำลองโดยใช้ประเภท Enum อย่างไรก็ตาม ประเภท enum มีข้อจำกัดที่ค่าของมันไม่สามารถมีอักขระ "-" ได้ และมีบางครั้งที่ไม่สามารถหลีกเลี่ยงสิ่งนี้ได้

ตัวอย่างเช่น การมีประเภท enum ชื่อ CustomPostEnum เพื่อแสดงรายการ custom post type ทั้งหมดที่สามารถ query ได้ (กล่าวคือ ประเภทที่ลงทะเบียนในไซต์และได้รับอนุญาตให้ query) นั้นเป็นสิ่งที่สมเหตุสมผล แต่ custom post type สามารถมีอักขระ "-" ในชื่อได้ เช่นในตัวอย่าง "some-custom-cpt" ด้านล่าง:

{
  customPosts(
    filter: {
      customPostTypes: ["post", "product", "some-custom-cpt"]
    }
  ) {
    # ...
  }
}

เนื่องจากข้อจำกัดนี้ ประเภทดังกล่าวจึงไม่สามารถเป็นประเภท enum ได้ แต่แทนที่ Gato GraphQL จะนำมาใช้งานในรูปแบบประเภท "Enum String" แบบกำหนดเอง ซึ่งเป็นประเภท String ที่รับได้เฉพาะค่าจากชุดที่กำหนดไว้ล่วงหน้า คล้ายกับ Enum

ตัวอย่างของประเภท EnumString ที่นำมาใช้งานในสคีมา GraphQL ได้แก่:

  • CustomPostEnumString
  • TagTaxonomyEnumString
  • CategoryTaxonomyEnumString
  • MenuLocationEnumString

Introspection: การ Query ค่าที่เป็นไปได้สำหรับประเภท "Enum String"

เราสามารถดึงรายการค่าที่ยอมรับได้สำหรับแต่ละประเภท EnumString ผ่าน introspection:

query EnumStringTypePossibleValues {
  __schema {
    types {
      name
      extensions {
        # This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
        possibleValues
      }
    }
  }
}