Logo

Funcionalidade:

Input object 'oneOf'

Input object 'oneOf'

O input object oneOf é um tipo especial de input object, onde exatamente um dos campos de entrada deve ser fornecido como valor, caso contrário o servidor retorna um erro de validação. Esse comportamento introduz polimorfismo para entradas em GraphQL, permitindo criar schemas mais organizados.

Por exemplo, recuperar um usuário em nossa aplicação poderia ser feito por diferentes propriedades, como o ID do usuário ou o e-mail. Para isso, normalmente precisaríamos criar um campo separado para cada propriedade:

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

Graças ao input object oneOf, podemos ter um único campo user que aceita todas as propriedades por meio de um input object oneOf UserByInput, sabendo que apenas uma das propriedades (seja o ID ou o e-mail) pode e deve ser fornecida:

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

Na query, fornecemos o valor de entrada para exatamente uma das propriedades:

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

Assine nossa newsletter

Fique por dentro de todas as atualizações do Gato GraphQL.