Um momento
Aula 11
Cursos / GraphQL com Express (Servidor Backend API JSON)
Query de GraphQL com Argumentos! (Args e GraphQLNonNull)

Summary

Resumo da Aula sobre Query para Encontrar Companhia por ID

Nesta aula, o objetivo foi aprender a criar uma query em GraphQL para buscar uma companhia específica pelo seu ID.

Passos Abordados:

  1. Configuração da Query:

    • Retornamos à query raiz e adicionamos a companhia nos fields.
    • Definimos o tipo como companhia type, pois a busca será para um único item, não uma lista.
  2. Definição de Argumentos:

    • Adicionamos uma propriedade chamada args, onde definimos o argumento id, do tipo GraphQL int, que não pode ser nulo.
  3. Uso do Resolve:

    • Implementamos a função resolve que utiliza args para encontrar a companhia pelo id.
    • O parent value é mencionado, mas não utilizado neste momento; o foco foi nos argumentos.
  4. Captura de Dados:

    • Ao testar no terminal, o args mostrou o ID fornecido, enquanto parent value estava indefinido.
  5. Implementação do Método Find:

    • No arquivo companhia.js, foi adicionada uma nova propriedade find que retorna uma promessa.
    • Simulamos um atraso utilizando setTimeout e utilizamos find para localizar a companhia cujo ID corresponde ao fornecido.
  6. Tratamento de Resultados:

    • Se a companhia for encontrada, retornamos o resultado, caso contrário, podemos decidir entre retornar null ou rejeitar a promessa com um erro.
  7. Teste da Query:

    • A query foi testada no GraphQL, onde diferentes IDs foram utilizados para buscar companhias (Google, Microsoft, Apple).
    • Observou-se que o uso de aliases era necessário ao fazer múltiplas consultas para o mesmo campo.

Conclusão:

Na aula, aprendemos a criar uma query para retornar uma única companhia com base no ID, definindo argumentos que não podem ser nulos e implementando a lógica de busca através de funções JavaScript. As consultas foram testadas e funcionaram conforme esperado.

Até a próxima aula!

Video Transcript

Fala pessoal, vamos continuar a fazer um tipo de query para poder encontrar uma companhia por id. Então a gente gostaria de voltar para aquele companhia no singular e gostaria de procurar a companhia pelo id. Para poder fazer isso, vamos fazer o seguinte, voltando ao editor de texto, aqui na nossa query raiz, em fields, você vai adicionar companhia e vai ser a query para companhia individual. O tipo vai ser o seguinte, companhia type, porque é só um, não precisa de lista. Agora vamos ter o seguinte propriedade chamada args, argumentos. Para argumentos vamos ter o seguinte, vamos ter o id. Esse id vai ser tipo o quê? Tipo vamos usar a GraphQL int, tá? Mas esse id não pode ser no. Então a gente tem que usar o seguinte, vamos usar essa, a gente vai dizer new GraphQL, no no e passo GraphQL int como um argumento para esse cara. Para dizer que você não quer deixar esse cara ser no. Então você sempre tem que dizer um id não pode ser no, tá? Tem que dar o id. Então a gente tem a propriedade args, que vai ser usada para poder receber o id como argumento lá da nossa query. E esse id é tipo int, GraphQL int, mas não pode ser no. Então a gente fala new GraphQL, no no e passa esse cara como argumento, tá certo? Aí depois do args vamos falar o resolve, que a gente tem que dizer o GraphQL como é que vai achar a companhia. Mas para resolve você tem que pegar o id da companhia. Você vai chamar o quê? Companhia.find que a gente vai defender já já e passa o id, mas cadê o id? Como é que você acha id? Então vai vir do resolve. Resolve tem argumentos aqui, parâmetros, o primeiro vamos chamar de parent value, o segundo vamos chamar de args. Então os argumentos que vai vir da query vão estar dentro do objeto args. Então você vê isso, vou dar o console log aqui, parent value e de args. Tá? Quando a gente dessa query, salvar, vou aqui atualizar, deu problema que eu esqueci de importar o requerer. Aí eu GraphQL no no, vou no mais cima, GraphQL no no, salvar. Volto lá para o navegador, olha só o que acontece. Field, companhia, argumento id, de tipo int é requerido, é obrigatório, mas não foi fornecido. Então o que a gente vai fazer aqui na companhia, olha só, para poder você passar argumentos, você abre os parâmetros e diz o nome do argumento, nesse caso id, a id 2 pontos, o id, vamos tentar id 2 que vai ser Google, não tem nada ainda porque a gente não fez o resolve. Mas vamos olhar o terminal. No terminal você vê o parent value está undefined, a gente não precisa preocupar com isso agora, mas o args aparece o id 2 aqui que veio lá desse cara aqui. Tá certo? Então vamos continuar nosso resolve aqui, vou deixar o console log para você ver, a gente tem que retornar companhia.find com o args.id que é o id, companhia a gente para procurar, mas agora a gente tem que definir o find, vamos lá no nosso arquivo companhia.js, adiciona nova propriedade desse objeto chamada find e põe o id, um argumento, aí vamos retornar nova promessa, aquela mesma coisa resolve, reject, criando essa nova promessa, então set time out para simular uma espera, trazentos, aí vamos dar o resolve com o que? A gente tem que encontrar primeiro, companhias aqui é um list para poder encontrar aquele objeto cujo id é aquele fornecido, você vai usar a função find, então a gente pode usar o find, companhias.find, companhia, o companhia id é igual ao id fornecido, deixa eu extrai esse cara para fora, então para fora desse cara vou falar consta, a companhia, então eu usei o find para poder encontrar companhia, então se a companhia não forneu, você vai dar o resolve com a companhia, mas se forneu, dá o resolve, na verdade poderia resolver, retornar no ou retornar um, rejeitar com um erro, depende de você, eu vou deixar assim mesmo, vou resolver sem, nada, vou resolver, mesmo que esteja no, vai resolver no, então você encontra a companhia e resolve que salvar, volta para o esquema, está definido agora, vamos salvar o esquema, vai no graph view, executamos a query e funcionou, vamos mudar o id, 3, microsoft, vamos mudar para um, apple, eu quero só o nome da companhia, vou colocar o id aqui, está certo, então você pode fazer várias queries aqui, companhia id 3, o id e nome, e o nome, nesse caso dessa maneira não dá, tem que usar alias, ele é só diferentes, então não dá, então é isso, na sala a gente aprendeu a fazer a query para que um só companhia, temos um args, definimos argumentos que levam aqui no parênteses, definimos id para ser não null e definimos o resolve, fizemos o companhia.find para encontrar a companhia por id tá certo? então por essa aula é só e até a próxima
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: