Logo

Funkcja:

Input object 'oneOf'

Input object 'oneOf'

Input object oneOf to szczególny typ input object, w którym dokładnie jedno z pól wejściowych musi zostać podane jako wartość — w przeciwnym razie serwer zwraca błąd walidacji. To zachowanie wprowadza polimorfizm dla wejść w GraphQL, umożliwiając projektowanie bardziej przejrzystych schematów.

Na przykład, pobieranie użytkownika w naszej aplikacji mogłoby być realizowane na podstawie różnych właściwości, takich jak ID użytkownika lub adres e-mail. Aby to zrobić, normalnie musielibyśmy utworzyć oddzielne pole dla każdej właściwości:

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

Dzięki input object oneOf możemy zamiast tego mieć jedno pole user, które przyjmuje wszystkie właściwości za pośrednictwem input object oneOf UserByInput, wiedząc, że tylko jedna z właściwości (ID lub adres e-mail) może i musi być podana:

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

W query podajemy wartość wejściową dla dokładnie jednej z właściwości:

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

Zapisz się do naszego newslettera

Bądź na bieżąco ze wszystkimi aktualizacjami Gato GraphQL.