
คุณสมบัติ:
'oneOf' Input Object
'oneOf' Input Object
oneOf input object เป็น input object ประเภทพิเศษ ที่กำหนดให้ต้องระบุ input field เพียงหนึ่งฟิลด์เท่านั้นเป็น input มิเช่นนั้นเซิร์ฟเวอร์จะส่งคืนข้อผิดพลาดในการตรวจสอบ พฤติกรรมนี้นำ polymorphism มาสู่ input ใน GraphQL ช่วยให้เราออกแบบ schema ที่เรียบร้อยยิ่งขึ้น
ตัวอย่างเช่น การดึงข้อมูลผู้ใช้ในแอปพลิเคชันของเราสามารถทำได้ด้วย property ต่าง ๆ เช่น user ID หรืออีเมล โดยปกติแล้วเราจำเป็นต้องสร้าง field แยกต่างหากสำหรับแต่ละ property:
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}ด้วย oneOf input object เราสามารถใช้ field เดียวชื่อ user ที่รับ property ทั้งหมดผ่าน UserByInput oneOf input object แทนได้ โดยรู้ว่าสามารถและต้องระบุ property เพียงหนึ่งรายการ (ไม่ว่าจะเป็น ID หรืออีเมล):
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}ใน query เราระบุค่า input สำหรับ property เพียงหนึ่งรายการเท่านั้น:
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}