Aula 15
Root Query de GraphQL para Encontrar Produto Por Id
Summary
Resumo da Transcrição
Na transcrição, o objetivo é criar uma consulta (query) para buscar um produto pelo seu ID, utilizando GraphQL. O passo a passo é o seguinte:
-
Estrutura da Query: A consulta deve ser semelhante àquela usada para buscar uma companhia por ID.
-
Implementação:
- A consulta começará na
root query
, que é a consulta raiz. - Um novo campo chamado
produto
será adicionado àroot query
, que aceitará um argumentoid
. - O tipo desse campo será
produto type
.
- A consulta começará na
-
Definição de Arguments:
- Os argumentos incluirão o
id
, que será do tipoGraphQL Int
e não pode sernull
. - A função de resolução (
resolve
) irá usar oid
para encontrar o produto correspondente.
- Os argumentos incluirão o
-
API e Resolução:
- A API simulada precisará de uma função
findProduct
para buscar o produto pelo ID. - Dentro da função
resolve
, será necessário chamar a função API e passar oid
que foi recebido dos argumentos.
- A API simulada precisará de uma função
-
Execução e Teste:
- Após salvar as configurações e reiniciar o servidor, a consulta será testada para garantir que retorna o produto correto.
- Mensagens de erro são tratadas, e ajustes no código (como adicionar vírgulas) são realizados para garantir o funcionamento correto.
-
Verificação dos Resultados:
- O sistema de GraphQL permite verificar facilmente os tipos e as queries disponíveis, tornando o processo de desenvolvimento mais interativo.
No final, a implementação do produto por ID funcionou, e o usuário teve acesso aos detalhes do produto, como nome e companhia.
Conclusão
A aula ensinou como criar uma consulta GraphQL simples para buscar um produto por ID, abordando desde a definição do esquema até a execução da consulta e tratamento de erros.
Video Transcript
Nós vamos fazer uma query para pegar um produto por id.
Vai ser a mesma maneira que a gente já fez para pegar um companhia por id.
Eu quero ver você fazer primeiro, tenta fazer.
Agora eu quero fazer a seguinte query, produto, passo id,
e pega o nome do produto, e quero o companhia, me deu id, o nome da companhia.
Eu quero que você faça essa query aqui.
Pause o vídeo e depois a gente continua.
E aí deu tudo certo. Vamos lá.
O recurso é produto, vai ser lá no produto.
Vai ser a root query primeiramente, porque está dentro do query, que é a query-raiz.
Então vai ter que adicionar um campo da root query chamado produto,
que leva como argumento o id.
Vamos lá, de volta ao esquema.js, aqui embaixo no root query type.
Os campos têm companhia plural, companhia singular, produtos plural,
mas não tem produto no singular.
Então você adiciona aqui a chave, produto, qual é o tipo, produto type.
E agora, como é que fala o resolve?
Tem também o args, se lembra?
Porque a gente tem que dizer o id.
Args tem o id que você vai passar, tipo o quê?
É um GraphQL int, mas não pode ser no.
Então fala em you, GraphQL, non, no,
passa o GraphQL int como argumento.
Então, produto vai ser tipo produto type.
Argumentos têm um id que é tipo um GraphQL int inteiro, que não pode ser no.
Então no resolve você vai dizer como encontrar o produto.
Nesse caso é por id.
Então o produto está na API, vamos olhar o api.index.js,
tem findProducts plural, tem findProducts por companhia id,
mas não tem o api simulado para encontrar o produto por id.
Então vamos adicionar aqui, findProduct no singular e vou adicionar o id do produto.
E é bem fácil retornar de novo.
New Promise, resolve, reject, sempre assim.
Então set time out para simular o espera.
Nesse back end simulado, essa API simulada, se pedir simulado, resolve com o quê?
A gente vai lá bater nos produtos, find o produto cujo
produto.id é igual o id passado como argumento pela função.
Então é isso, você vai encontrar o produto, o id é argumento.
Se não encontrar, vai retornar no, tá?
Salvar, então vamos dar o findProduct da API.
Para dizer o GraphQL como encontrar o produto, vai dizer retorne.
api.findProduct, qual o id?
Agora o id está vindo do args, para pegar esse, o segundo argumento do resolve.
Primeiro apparent value, o segundo é args, que é os argumentos passados.
Então você vai usar args.id.
Então é isso, salvar, vamos lá tentar novamente.
O servidor já reiniciou porque eu estou usando node.mon.
Então vou dar a query aqui, opa, deu problema.
Vamos ver o que deu.
resolve unexpected identifier, será que eu esqueci uma vírgula?
Eu esqueci a vírgula aqui depois do args, eu adiciono a vírgula, salvar,
reiniciou, então deixa eu comentar o primeiro produto
e eu quero só ver nessa query produto por id.
Então pegou o produto, nome iPad, companhia, Apple, tá certo?
Vamos tentar o produto de id 4.
Tá aí, surface, companhia id 3 Microsoft,
vai adicionar o id do produto para conferir.
Tá aí, id 4 mesmo.
Então você pediu o produto por id, essa chave produto é um field do campo da root query,
o argumento args.id aqui, 4, que é um GraphQL int.
Tem até esse negócio legal aqui, se você dá o hover,
deixar o mouse aqui, você pode clicar na root query type, ele te diz as queries
que você pode fazer nos campos da root query type.
Tem o companhia, você clica no produto, ele te mostra os fields.
Isso é legal, do GraphQL aqui.
Tem até o tipo int, o que é que é int.
Você clica em produto, ele vai lá, leva o argumento id, e esse produto é uma lista de produtos.
Companhia você vê aqui as coisas, que tem vários produtos.
Muito legal para você ver o seu esquema aqui.
Então para 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: