Aula 11
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:
-
Configuração da Query:
- Retornamos à query raiz e adicionamos a
companhia
nosfields
. - Definimos o tipo como
companhia type
, pois a busca será para um único item, não uma lista.
- Retornamos à query raiz e adicionamos a
-
Definição de Argumentos:
- Adicionamos uma propriedade chamada
args
, onde definimos o argumentoid
, do tipoGraphQL int
, que não pode ser nulo.
- Adicionamos uma propriedade chamada
-
Uso do Resolve:
- Implementamos a função
resolve
que utilizaargs
para encontrar a companhia peloid
. - O
parent value
é mencionado, mas não utilizado neste momento; o foco foi nos argumentos.
- Implementamos a função
-
Captura de Dados:
- Ao testar no terminal, o
args
mostrou o ID fornecido, enquantoparent value
estava indefinido.
- Ao testar no terminal, o
-
Implementação do Método Find:
- No arquivo
companhia.js
, foi adicionada uma nova propriedadefind
que retorna uma promessa. - Simulamos um atraso utilizando
setTimeout
e utilizamosfind
para localizar a companhia cujo ID corresponde ao fornecido.
- No arquivo
-
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.
- Se a companhia for encontrada, retornamos o resultado, caso contrário, podemos decidir entre retornar
-
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: