Crud completo com Redis, mongoDB e Node.js


Crud completo com Redis, mongoDB e Node.js

Cacheando uma API Node.js

Introdução

Dando continuidade ao meu artigo anterior sobre Redis, hoje irei demonstrar como criar uma API utilizando Node.js, MongoDB e o Redis como cache. Caso tenha interesse em ler o artigo anterior, segue o seu link: Dando os primeiros passos com Redis.

Para pular a etapa de criação de um novo projeto, eu irei utilizar um que eu desenvolvi em um artigo anterior. Caso tenha interesse em clonar esse projeto, segue o seu link no GitHub: node-express.

Estrutura do projeto

O projeto está bem simples, eu criei um controller contendo os 5 verbos para um crud e um diretório para criação das rotas. Abaixo você tem uma imagem demonstrando a estrutura desse projeto:

projeto scaffold

Para os próximos passos será necessário um editor de textos, eu irei utilizar o VS Code, mas você pode escolher um de sua preferência.

O primeiro passo será baixar as bibliotecas necessárias para o utilizar o redis e o mongoose. Para isso, abra um terminal e navegue até o seu projeto, em seguida execute o comando abaixo:

npm i body-parser mongoose redis --save

O próximo passo será a criação de um Schema. Para isso, crie um arquivo chamado db.js no seguinte caminho ./src/config/db.js. Agora abra esse arquivo no seu editor de textos e atualize ele com o trecho de código abaixo:

O arquivo acima irá criar uma collection, nós iremos utilizar ela nos próximos passos desse artigo.

Agora para deixar o código mais organizado, vamos criar um diretório no nosso projeto para os nossos repositórios. Para isso, crie um novo diretório no seguinte path ./src/repositories/ e dentro dele um arquivo chamado personRepository.js.

estrutura node mongo

Esse repositório será responsável pela conexão com o Schema. Atualize o arquivo personRepository.js com o código abaixo:

Antes de atualizar o controller, vamos adicionar o bodyParser no projeto. Abra o seu arquivo app.js e atualize ele com o código abaixo.

Agora atualize o seu arquivo ./src/controllers/personController.js com o código abaixo:

Navegando rapidamente pelo código acima você tem:

  • 03: Chamada para o repositório PersonRepository
  • 05 a 43: implementação dos verbos com a chamada ao nosso PersonRepository

Testando as rotas

Para não precisar instalar o mongoDB no meu computador, eu irei utilizar ele dentro de um contêiner docker. Caso tenha interesse em utilizar o mongo com Docker, segue link de um artigo onde eu demonstro esse passo a passo: Docker Criando um server mongoDB.

Agora para testar as nossas rotas eu irei utilizar o postman. Caso não conheça ele ainda, o postman nós permite enviar requisições HTTP e obter suas respostas.

POST

A primeira rota que nós precisamos testar é o post, ela que irá cadastrar os nossos registros. Com o postman aberto, preencha ele conforme a imagem abaixo:

POST

GET

Agora altere o verbo para GET e veja o resultado abaixo:

GET

GETById

Buscando uma pessoa pelo seu Id:

Get By ID

PUT

Para validar o PUT, eu irei atualizar o campo role para System Architect.

DELETE

Agora vamos deletar o nosso registo:

Bom, com isso nós conseguimos verificar que todos os nossos verbos estão funcionando corretamente. Para que possamos testar o Redis, será necessário ter alguns registros cadastrados. Para isso, eu irei cadastrar o Zé Maria 10x.

Configurando o Redis

Para não precisar instalar o Redis no meu computador, eu irei utilizar ele da mesma forma que estou utilizando o mongo, dentro de um contêiner Docker. Caso tenha interesse em saber como criar um contêiner com redis, segue link de um artigo onde eu demonstro esse passo: Instalando o Redis em um contêiner Docker.

O próximo passo será adicionar o Redis no nosso controller. Para isso, atualize o arquivo personController.js com o trecho de código abaixo:

O passo anterior foi bem simples, eu adicione o redis na linha 05, em seguida eu criei um cliente na linha 06, depois eu criei um chave chamada allpersons que deve expirar em 20 segundos. Para verificar se a aplicação está batendo no banco ou no redis, eu criei dois consoles retornando: redis quando estiver no cache e um outro db para quando a API requisitar os dados do mongo.

Testando o Cache

Agora para verificar se o redis está configurado corretamente, execute o código novamente e note no seu terminal que ele bate uma vez no banco e depois fica no redis por 20 segundos. Abaixo você tem uma imagem demonstrando esse passo:

redis com node.js e mongodb

Com isso nós finalizamos mais esse artigo, o meu intuito aqui foi demonstrar uma das formas de melhorar a performance dos nossos sistemas. Caso tenha interesse em baixar o código fonte desenvolvido nesse artigo, segue o seu link no GitHub: Node_MongoDB_Redis.

Espero ter ajudado e até um próximo artigo pessoal 😉

Compartilhe:

Share on facebook
Facebook
Share on twitter
Twitter
Share on pinterest
Pinterest
Share on linkedin
LinkedIn

Table of Contents

Postagens Relacionadas

SaferatHome

Safer at Home

Safer at Home 26/02/2021(US) – Filmes – 0h 0min –   Nota: 0/10   Sinopse     Elenco Mais informações Título Original Safer at Home
SouLunaOUltimoShow

Sou Luna: O Último Show

O elenco de “Sou Luna” se apresenta ao vivo pela última vez no mítico estádio Luna Park em Buenos Aires. Vamos acompanhá-los na intimidade dos bastidores e r…
Chansondouce

Chanson douce

Chanson douce () – Drama, Crime – 1h 40min –   Nota: 6/10   Sinopse     Elenco Leïla Bekhti Como – Myriam Karin Viard
OutpostInfernoNegro

Outpost 2: Inferno Negro

O ano é 1945, 2ª Guerra Mundial, e um cientista alemão de nome Klausener está trabalhando em uma tecnologia nova e assustadora que tem o poder de criar um ex…