Logo

คุณสมบัติ:

'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
  }
}

สมัครรับจดหมายข่าวของเรา

ติดตามการอัปเดตทั้งหมดของ Gato GraphQL