Logo

Funktion:

Input Object 'oneOf'

Input Object 'oneOf'

Das oneOf Input Object ist ein besonderer Typ von Input Object, bei dem genau eines der Eingabefelder als Eingabe angegeben werden muss, andernfalls gibt der Server einen Validierungsfehler zurück. Dieses Verhalten führt Polymorphismus für Eingaben in GraphQL ein und ermöglicht es uns, sauberere Schemas zu entwerfen.

Zum Beispiel könnte das Abrufen eines Benutzers in unserer Anwendung über verschiedene Eigenschaften erfolgen, wie die Benutzer-ID oder die E-Mail. Dafür müssten wir normalerweise für jede Eigenschaft ein eigenes Feld anlegen:

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

Dank des oneOf Input Objects können wir stattdessen ein einziges Feld user haben, das alle Eigenschaften über ein UserByInput oneOf Input Object akzeptiert, wobei nur eine der Eigenschaften (entweder die ID oder die E-Mail) angegeben werden kann und muss:

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

In der Query geben wir den Eingabewert für genau eine der Eigenschaften an:

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

Abonniere unseren Newsletter

Bleib über alle Updates zu Gato GraphQL auf dem Laufenden.