Logo

Característica:

Input object 'oneOf'

Input object 'oneOf'

El input object oneOf es un tipo particular de input object, donde se debe proporcionar exactamente uno de los campos de entrada como entrada, o de lo contrario el servidor devuelve un error de validación. Este comportamiento introduce polimorfismo para entradas en GraphQL, permitiéndonos diseñar esquemas más limpios.

Por ejemplo, recuperar un usuario en nuestra aplicación podría hacerse mediante diferentes propiedades, como el ID o el correo electrónico del usuario. Para hacer esto, normalmente necesitaríamos crear un campo separado para cada propiedad:

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

Gracias al input object oneOf, podemos tener en su lugar un único campo user que acepte todas las propiedades mediante un input object oneOf UserByInput, sabiendo que solo una de las propiedades (el ID o el email) puede y debe proporcionarse:

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

En la consulta, proporcionamos el valor de entrada para exactamente una de las propiedades:

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

Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.