Um momento
Aula 24
Cursos / GraphQL com Express (Servidor Backend API JSON)
Como Usar Input Type para Facilitar a Mutation no GraphQL (Aula Tutorial)

Summary

Resumo da Aula sobre Input Types em Mutations

Nesta aula, aprendemos a utilizar Input Types para simplificar a definição de mutações no GraphQL, especificamente para adicionar uma nova companhia. Aqui está um resumo dos principais pontos abordados:

O que são Input Types?

  • Os Input Types permitem agrupar vários argumentos em um único objeto, facilitando a passagem de dados para a mutação.
  • Em vez de receber múltiplos argumentos separados (como nome, data de fundação e site), podemos encapsular todos eles em um único argumento.

Criação do Input Type

  1. Definição de um novo tipo:

    • Criamos um tipo chamado companhiaInputType como um GraphQL input object type, que contém os mesmos campos que o tipo de companhia, mas sem o ID.
    • Os campos definidos são: nome, fundada_em, e site.
  2. Configuração dos campos:

    • Os campos no input type podem ser definidos como obrigatórios utilizando new GraphQLNonNull(GraphQLString).
const companhiaInputType = new GraphQLInputObjectType({
  name: 'companhiaInput',
  fields: {
    nome: { type: GraphQLNonNull(GraphQLString) },
    fundada_em: { type: GraphQLNonNull(GraphQLString) },
    site: { type: GraphQLNonNull(GraphQLString) },
  },
});

Modificação da Mutações

  • Alteramos a mutação para que o argumento não seja uma lista separada de args, mas sim um único argumento, input, que é do tipo companhiaInputType.
addCompanhia: {
  type: companhiaType,
  args: {
    input: { type: companhiaInputType },
  },
  resolve(parent, args) {
    const { nome, fundada_em, site } = args.input;
    // lógica para adicionar a companhia
  },
}

Conclusão

A introdução de Input Types torna a manipulação de múltiplos argumentos mais eficiente e organizada. A mutação agora espera um único objeto, permitindo uma estrutura clara e simplificada durante a adição de novas companhias.

Video Transcript

Estamos de volta, acabamos de aprender na uma télioca como fazer uma mutação, a Muteche, para poder adicionar uma nova companhia. Nesta aula nós vamos falar de input type para poder facilitar a criação de recursos aqui na nossa Muteche. Nos argumentos, em vez de ter vários argumentos separados, vamos ter só um argumento que embrulha todos os outros. Então, vamos falar de input type. Note aqui que quando a gente criou a mutação para adicionar a companhia, temos aqui os argumentos com o nome da companhia, a data de fundação e o site. E todos eles são separados. E você nota aqui de volta de todo o texto, lá no Muteche de adicionar a companhia, nós criamos args e separamos cada arg aqui. E quando você dá o Creator todos são separados. Agora, seria legal se a gente pudesse pegar todos esses argumentos e colocar em uma só propriedade, uma só entidade. Para isso a gente vai usar input types. Para input types vai ser assim. Você note aqui de volta o esquema 4js, lá no definição do companhia type, nós definimos esse tipo aqui com o nome companhia e as fields, os campos de D, nome, fundada e site e um relacionamento aqui com os produtos. Então, para poder fazer o seguinte aqui, em vez de dizer esses caras separados, você pode fazer input e passa um objeto de ssamsim, o chave, ao redor de todas as propriedades, para poder fazer isso a gente vai usar input type. Input type você faz o seguinte, você vai criar um novo tipo chamado companhia input type. Agora, não vai ser GraphQL object type, vai ser GraphQL input object type. Então, vai ter as mesmas fields de companhia, exceto o ID, porque a gente só precisa do nome, fundada em e o site. Então, vamos aqui em cima, antes de companhia type, vamos definir companhia input type, vai ser new GraphQL input object type e passa um objeto. Agora, a gente não tem esse cara requerido, vamos lá em cima e requerir GraphQL input object type. Adicionei a lista de requerir methods ao pacote GraphQL. E com isso, vamos continuar aqui. Então, a gente vai fazer aquela mesma coisa, name, com o nome da field, companhia input, eu vou chamar. Qual é os fields, os campos? Os campos vai ser o nome, fundada em e site. Então, eu posso até copiar do companhia type, tá? Copiar aqui. Nome, fundada em e o site. Agora, se você quiser deixar cada um desses argumentos obrigatórios, você pode adicionar new GraphQL, no, no e chamar-se cara com todos a string, tá? Então, vou descerar esse e esse. Dessa maneira, todos os argumentos serão obrigatórios. Então, criamos o companhia input type, que é um GraphQL input object type. Depois de a gente criar isso, a gente tem que modificar a nossa mutação. Vai lá embaixo na mutação, newTest aqui. Em vez de falar os orgs aqui, dessa maneira, você vai, eu vou comentar aqui só para deixar o código para você, você vai falar input, o argumento vai ser input, aí você põe companhia input type, tá? Aqui, ó. Dessa maneira. Aí quando chegar em orgs, não vai ser mais orgs, nome, fundada em site. Você pode pegar o input que está dentro do orgs, tá? Isso significa orgs.input, eu pego esse cara e põe na variável input. Então, aqui, em vez desses caras de orgs, você pode votar input. Tá? Em salvar. Vamos agora tentar novamente, voltando ao navegador. Vamos ver, você adiciona a propriedade aqui. Input e passa um objeto, se informar a trugação. Vou executar adicionar a companhia. Adicionar a companhia, deixa eu reiniciar. O tipo de mutation type para adicionar companhia tem que ser input type, mas ele é o bitve undefined, então vamos ver o que está acontecendo aqui. Eu botei companhia input type como input. Retorna companhia type, tá certo. Companhia input type lá em cima. Graphic é o input object type. Companhia input, fields.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: