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
NPM ou Yarn? Eu vou de Yarn, porque estou mais habituado.
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.
Agora vamos entender isso aqui:
Nessa estrutura temos o main.ts, que é o ponto de partida da nossa aplicação.
O app.module.ts, que é o core da nossa aplicação, onde são registrados todas as nossas configurações e módulos.
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.
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.
E agora a mágica:
Usando o CLI do nest, temos um gerador de CRUD (https://docs.nestjs.com/recipes/crud-generator#crud-generator)
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:
Vamos editar o nosso app.modules, registrando nosso users.
Vamos começar pelo nosso create-users.dto.ts, usando o código abaixo.
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.
Vamos editar o arquivo /users/entities/user.entity.ts
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.
No users.services.ts, editamos os methods create(), findAll(), findOn(), update() e remove() que foram criados pelo CLI.
O Controller já está pronto, só precisamos editar, pois o type do nosso id é string e não number.
Criamos também um arquivo .env na raiz do projeto, setando uma variável com a string de conexão com o seu mongodb.
E tudo pronto, estamos ON FIRE.
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. (Falando em ecossistema, conheça mais sobre o ecossistema da Kodus)
E, caso queira se aprofundar neste exemplo sobre NestJS, recomendo que você dê uma olhada nesse repositório no GitHub.
Grande abraço e até a próxima.