
Functie:
Input object 'oneOf'
Input object 'oneOf'
Het oneOf input object is een bijzonder type input object, waarbij exact één van de invoervelden als waarde moet worden opgegeven — anders geeft de server een validatiefout. Dit gedrag introduceert polymorfisme voor invoer in GraphQL, waardoor je neater schema's kunt ontwerpen.
Zo kan het ophalen van een gebruiker in onze applicatie op basis van verschillende eigenschappen, zoals het gebruikers-ID of e-mailadres. Om dit te doen, zouden we normaal gesproken voor elke eigenschap een apart veld moeten aanmaken:
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}Dankzij het oneOf input object kunnen we in plaats daarvan één enkel veld user hebben dat alle eigenschappen accepteert via een UserByInput oneOf input object, waarbij slechts één van de eigenschappen (het ID of het e-mailadres) opgegeven kan en moet worden:
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}In de query geven we de invoerwaarde op voor exact één van de eigenschappen:
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}