Logo

Fitur:

Input Object 'oneOf'

Input Object 'oneOf'

Input object oneOf adalah tipe input object khusus, di mana tepat satu dari field input harus disediakan sebagai input, atau server akan mengembalikan error validasi. Perilaku ini memperkenalkan polimorfisme untuk input dalam GraphQL, memungkinkan kita merancang skema yang lebih rapi.

Misalnya, mengambil seorang pengguna dalam aplikasi kita dapat dilakukan melalui berbagai properti, seperti ID pengguna atau email. Untuk melakukan ini, kita biasanya perlu membuat field terpisah untuk setiap properti:

type Query {
  userByID(id: ID!): User
  userByEmail(email: String!): User
}

Berkat input object oneOf, kita dapat menggunakan satu field user yang menerima semua properti melalui input object oneOf UserByInput, dengan mengetahui bahwa hanya satu properti (baik ID maupun email) yang dapat dan harus disediakan:

type Query {
  user(by: UserByInput!): User
}
 
input UserByInput @oneOf {
  id: ID
  email: String
}

Dalam query, kita menyediakan nilai input untuk tepat satu dari properti tersebut:

{
  tom: user(by: {
    id: 1
  }) {
    name
  }
 
  jerry: user(by: {
    email: "jerry@warnerbros.com"
  }) {
    name
  }
}

Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.