Um momento
Aula 13
Cursos / GraphQL com Express (Servidor Backend API JSON)
Relacionando Companhia com Produto (1 para N / Um para Muitos no GraphQL)

Summary

# Resumo da Aula: Relacionamento entre Companhia e Produtos

## Introdução
Na aula, discutimos como estabelecer um relacionamento entre companhias e produtos. O objetivo é que uma companhia possa ter vários produtos associados.

## Query para Obter Produtos de uma Companhia Específica
- Queremos uma query que retorne todos os produtos de uma companhia específica (por exemplo, a companhia com id 1).
- A estrutura da query raiz foi definida, e foi adicionado um campo chamado `produtos` ao tipo `companhia`, que representa uma lista de produtos.

## Definindo o Campo `produtos`
- O campo `produtos` é um tipo de lista de `produto type`.
- Precisamos usar a função `resolve` para especificar como encontrar os produtos associados a uma companhia. A função `resolve` utiliza `parentValue` e `args` como parâmetros.

## Implementação do Método de Busca
- Dentro da implementação, usamos a função `find_produtos` para filtrar os produtos com base no `companhia_id` fornecido.
- Adicionamos novos registros no banco de dados simulado para os produtos da Microsoft e Google.

## Código do Método `find_produtos`
- Define um método que simula uma espera (300 milissegundos) e filtra os produtos onde `produto.companhia_id` corresponde ao `companhia_id` fornecido.

## Chamando a API
- Utilizamos a função `find_produtos` na classe `companhia`, passando `parentValue.id` como o id da companhia.
- O resultado é uma nova promessa que, ao ser resolvida, retorna a lista filtrada de produtos.

## Exibição dos Resultados
- Após atualizar o navegador, conseguimos visualizar os produtos da companhia Apple, retornando apenas os nomes dos produtos, como iPhone e iPad.
- O código pode ser ajustado para incluir mais informações, como o id dos produtos.

## Conclusão
Nesta aula, aprendemos a criar um relacionamento entre companhias e produtos usando GraphQL, definindo o campo `produtos` e implementando a lógica para filtrar os produtos com base na companhia associada.

**Próximos Passos:** Continuar experimentando com adições e melhorias na nossa API.

Até a próxima aula!

Video Transcript

Olá a todos vamos continuar aqui então vamos fazer o relacionamento para relacionar companhia a um produto a nosso relacionamento é o seguinte uma companhia pode ter vários produtos então nós temos aqui olha a query vai poder pegar todos os produtos mas nem todos os produtos vem da mesma companhia agora o que a gente quer fazer é pegar o produtos de uma companhia específica nesse caso aqui companhia com id1 me dê não somente o nome da companhia mas eu quero também todos os produtos dessa companhia e quando você voltar a retornar os produtos eu só quero saber do nome então vamos lá você vai aqui em cima essa aqui a nossa root query a query raiz a gente vai aqui para o tipo companhia companhia type agora o campanha type tem vários o que produtos então aqui no campo nos na propriedade dos campos fios para companhia nós vamos adicionar propriedade chamada produtos tá porque quando você bate na companhia está dentro da olha aqui no lado esquerdo você vai escrever produtos esse cara aqui corresponde a esse campo que a gente criou no plural então produtos vamos definir esse objeto qual é o tipo o tipo vai ser o que uma lista de produtos então vamos fazer aquela mesma coisa se lembra qual é o grafql negócio para a lista olha aqui se lembra o grafql list então vamos usar a mesma coisa lá vai dizer new graphql list mais lista de que de produto type esse cara aqui então vamos lá produto type aí tá legal aí você está dizendo que é uma lista de produtos mas agora a gente tem que dizer o grafql como ele vai encontrar esse produtos que ele não sabe então você tem que dizer que que propriedade qual é a propriedade que é uma função que você usa para poder encontrar as coisas você vai usar o resolve tá resolve diz o grafql como é que você encontra esse recurso então para dar o resolve vamos usar os argumentos parent value que é o primeiro e o segundo vai ser args vamos ver se a gente vai usar isso vamos dar o resolve aqui só para você ver parent value e args cadê deixa eu dar o consola dos dois para você ver args vou retornar nada o objeto vazio tá certo eu vou salvar ver se o servidor já atualizou aqui desculpa eu tenho que dizer uma lista em vez do objeto porque isso é uma lista então aqui retorno a lista só para deixar isso funcionando tá bom você nota produtos você tornou uma lista em branco vazia porque era isso que a gente vai retornar mas eu quero saber do consolo olha que o consolo parent value você nota aqui tá retornando esse objeto com id1 e nome apple tá bom e aí então se você nota aqui o parent value vai retornar o id da companhia e a gente vai precisar desse cara para poder achar todos os produtos que pertencem a companhia de id número um então por isso que a gente tem um parent value que é o pai né o valor do pai que nesse caso é a companhia o objeto da companhia né então vamos dar esse cara para fazer a busca pelo todos os produtos cuja companhia tem id a companhia de um vamos lá bota aqui no return a gente vai fazer o seguinte onde é que estão produtos lembra os produtos se você lembra aqui a gente já fez esse query tá dentro dessa chamada de api simulada com essa função find produtos se a gente for nesse arquivo da api tem find produtos mas não tem ainda a função sim para a gente poder encontrar o produto por id então a gente pode adicionar um extra ou pode adicionar um argumento aqui opcional então vamos ver aqui produtos vamos fazer um extra então vou fazer esse aqui é por causa da api simulada a gente tem que fazer vamos fazer find produtos vai companhia id a companhia id aí você pega o id da companhia e essa função vai ser o seguinte tá ela vai procurar aqui fazer uma busca e vai filtrar só os produtos que tem companhia id esse caso pode ser um por exemplo como a gente só tem produtos com a opção id a que agora adiciona mais para poder realmente funcionar o negócio o adicionar o 3 a da pixel o que é a companhia 3 o rm companhia 3 o microsoft companhia 2 google pixel o microsoft o d3 tá bom então deixa eu adicionar só mais uns aqui opa vou descer esse id xbox tá id 5 adicionei 3 novos recordes para dançar o banco de dados fácil para os produtos o pixel companhia id 2 o google o surface o xbox companhia id 3 o microsoft então vamos aqui em baixo find produtos vai companhia id ele vai retornar uma nova promessa promessa resolve reject como dois parâmetros pela sua função aqui dá o set time at para simular uma espera 300 mili segundos e vamos dar o que resolve do que vamos dar o resolve pega os produtos e filtra o produto onde o produto ponto companhia id você só vai deixar passar os produtos que o companhia id seja o companhia id passado pelo argumento da função ele vai pegar a gerar a nova lista e somente deixar passar os produtos cuja companhia é especificada tá bom esse aqui é o nosso método simulado para poder obter os produtos pelo id da companhia com esse escrito vamos voltar lá no nosso esquema aí vamos lá fazer continuar aqui volta lá para o companhia type aí você vai dar o return do que vai chamar api ponto find produtos o objeto vai companhia id e passa o id da companhia mas cadê o id da companhia se lembra que tem o parent value esse cara tem o objeto da companhia que tem o id então você vai falar parent value ponto id que é o id da companhia tá e esse vai é tornar o novo promessa e essa promessa vai ser resolvida pelo resolve ele automaticamente vai desembrulhar a promessa com o valor que é a lista dos produtos que pertencem a companhia com o id especificado vamos salvar vamos ver no que dá vou atualizar o navegador agora você vê pra vou deixar o delta esse produto aqui a deixei mesmo você vê que tem tem vários produtos olha na nossa query de produtos 5 né aí você não é como eu digo me dê companhia com o id 1 que a apple e eu quero só o nome da companhia tá aqui agora quero também saber dos produtos da sua companhia mas só quero o nome só quero o nome dos produtos então apareceu aqui o iphone e ipad que tá correto se você olhar na lista de produtos está corretamente pareceu corretamente né você quiser o id dos produtos só adicionar a ideia aqui ó e rodar de novo pareceu tá e se você esperar a gente adicionar mais fios pois seria legal pra gente fazer mais experimento então é por isso é por essa aula é só vamos revisar então a gente aprendeu a relacionar a companhia e produtos é bem fácil a companhia você adiciona um fio que é um campo chamado produtos nesse caso plural porque a companhia tem vários produtos você faz a mesma coisa de antes como sempre qual é o tipo desse campo ah nesse caso vai ser uma lista então usa graphql list mas você passa o produto type que vai ser cada cada item dessa lista é de tipo produto agora o graphql não sabe como é que acha esse produto então você tem que dizer ele com o método resolve que leva dois argumentos parent value args nesse caso a gente usa só o parent value que nesse caso corresponde ao a companhia né o objeto da companhia e a gente usa parent value para poder pegar o id da companhia para passar para esse método que a gente escreveu no back end api simulado para encontrar e filtrar todos os produtos pelo id da companhia então a gente acha os produtos que pertencem a companhia especificada tá vamos 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: