Índice:

NestJS: introdução e aplicação de CRUD usando MongoDB

Índice:

Se você está neste artigo, é porque deseja entender melhor sobre o NestJS e como é possível criar um CRUD, a base para construção de aplicações back-end, utilizando o banco de dados MongoDB. Então, vamos ao que interessa!

Antes de mais nada, o que é o NestJS?

NestJS é um framework Open Source em Node.js, que trás um modelo de arquitetura que acelera o desenvolvimento de aplicações backend.

Como o próprio site oficial diz:

“A progressive Node.js framework for building efficient, reliable and scalable server-side applications.”

Documentation | NestJS – A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript…
docs.nestjs.com

Com uma arquitetura modular, bem parecida com o Angular ou Spring, quem conhece vai se familiarizar com ele, que usa os recursos mais recentes do JavaScript, oferecendo padrões de design e arquitetura consolidada.

Ah, bem importante: NestJS é TypeScript ok?!

Além de permitir o uso de TypeScript, esta tecnologia oferece uma série de vantagens para aqueles que atuam tanto na programação back-end, como no front-end. Um exemplo disso está na própria organização do seu código, que é bem estruturada e intuitiva, feita através de um model-service-controller, o que facilita a sua utilização.

Mas vamos lá, a ideia aqui, é conhecer este framework, e nada melhor para isso do que vendo ele em ação.

Bom, de início, vamos instalar o NestJS. Para isso, vale ressaltar que é preciso do Node.js e do NPM já instalado.

Instalando o NestJS

instalação do nestJS

NPM ou Yarn? Eu vou de Yarn, porque estou mais habituado.

passo na instalação do nestJS

Legal, agora temos a estrutura criada e podemos entender o que ela traz. Além disso, precisamos escolher a IDE para seguir com o projeto. Fique a vontade para usar a de sua preferência, eu vou de WebStorm.

estrutura de arquivos do nestJS

Agora vamos entender isso aqui:

Nessa estrutura temos o main.ts, que é o ponto de partida da nossa aplicação.

arquivo main.ts do NestJS

O app.module.ts, que é o core da nossa aplicação, onde são registrados todas as nossas configurações e módulos.

arquivo app.module.ts do NestJS

Aqui começa a ficar interessante! Repare no “@Module”. Sim, usamos Decorators. Os Decorators funcionam mais ou menos como os Annotations no Spring.

Bom, agora com o projeto criado, vamos executá-lo.

comando de execução do projeto em NestJS

Veja o Hello World em http://localhost:3000, que é a porta que foi setada no main.ts

Mas vamos ao que interessa, não é mesmo? Vamos ao nosso famoso CRUD de users com mongodb.

Implementando o CRUD com MongoDB

Primeiro, vamos limpar esta estrutura, apagando os arquivos: app.controller.spec.ts; App.controler.ts; App.service.ts. Além disso, vamos editar o app.modules.ts, pois ele instanciava o service e o controler que apagamos.

Passo para limpeza da estrutura do NestJS

E agora a mágica: 

Usando o CLI do nest, temos um gerador de CRUD (https://docs.nestjs.com/recipes/crud-generator#crud-generator)

criação do CRUD com NestJS

Este comando não apenas gera todos os blocos de construção NestJS (módulo, serviço, classes de controlador), mas também uma classe de entidade, classes DTO. 

Abaixo, temos o controller gerado para REST API:

código com o controller gerado para REST API

Vamos editar o nosso app.modules, registrando nosso users. 

passo com a edição do app.module.ts para criação de users

Vamos começar pelo nosso create-users.dto.ts, usando o código abaixo.

código da classe de usuários para a aplicação

Com a criação do extend CreateUserDto, o update-users.dto.ts, então, já está pronto.

Vamos agora para nossa classe de entidade. Para isso, vamos precisar instanciar o mongo, eu vou usar o mongo Atlas, que para um projeto starter, funciona muito bem.

Na documentação do NestJS, mais especificamente na seção TECHIQUES, temos as instruções para trabalhar com o mongo.

Vamos instalar o mongoose e a tipagem.

código de comando para instalação do mongoose para a aplicação de NestJS

Vamos editar o arquivo /users/entities/user.entity.ts

código de edição de arquivo para aplicação de NestJS

Quase tudo pronto, falta agora configurar o acesso ao mongo e os methods no service e os endpoints no controller.

Vamos lá, no users.module.ts, importar a conexão com o mongo.

passo para importar conexão com MongoDB

No users.services.ts, editamos os methods create(), findAll(), findOn(), update() e remove() que foram criados pelo CLI.

passo com a edição dos methods para a realização de CRUD

O Controller já está pronto, só precisamos editar, pois o type do nosso id é string e não number.

código de edição do controller para aplicação de NestJS

Criamos também um arquivo .env na raiz do projeto, setando uma variável com a string de conexão com o seu mongodb.

código para criação de arquivo para conexão com MongoDB

E tudo pronto, estamos ON FIRE.

tela com resultado final da instalação e aplicação no CRUD com MongoDB

A ideia foi apresentar o framework NestJS e mostrar na prática o quão produtivo é desenvolver com este framework.

Se você acompanhou este conteúdo até o final, tenho certeza de que conseguiu desenvolver a sua primeira aplicação de CRUD através do NestJS com MongoDB.

Vale ressaltar que estes conceitos são mais introdutórios e voltarei em outros artigos trazendo um pouco mais sobre este ecossistema do NestJS.

Grande abraço e até a próxima.

Publicado por:
Compartilhe:

Posts relacionados

john-schnobrich-FlPc9_VocJ4-unsplash

O Fluxo Scrum é uma abordagem ágil fundamental na gestão de projetos, especialmente no desenvolvimento de software. Este método proporciona uma estrutura flexível e adaptativa, essencial para enfrentar os desafios

entrega de software

No atual cenário de desenvolvimento de software, a pressão por eficiência e velocidade de entrega nunca foi tão intensa. Empresas de todos os tamanhos estão buscando maneiras de acelerar o

Estimativas de projetos de software

Quando falamos em gestão de um time de engenharia de software, os principais desafios que vem à cabeça são como estimar as atividades, e como lidar com as expectativas dos