ประเภท '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 ได้แก่:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
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
}
}
}
}