fbpx

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

Alexander Yokogawa, desenvolvedor da EZ.devs, introduz o assunto NestJS e mostra como é possível desenvolver a base de aplicações back-end através de um banco de dados. Confira!

imagem com o logotipo de NestJS

Fala, devs! Tudo certo? 

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. (Falando em ecossistema, conheça mais sobre o ecossistema da EZ)

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.

Públicações relacionadas

Conhecendo a fundo os principais frameworks de front-end
frameworks front-end guia criado em parceria com a rocketseat

Em parceria com a Rocketseat, montamos um guia detalhado sobre os 3 frameworks JavaScript mais utilizados pelo ecossistema tech.

Angular: um framework de destaque no desenvolvimento front-end
trabalhando com framework angular em desenvolvimento web

Conheça o framework Angular, que está fazendo sucesso entre desenvolvedores, e entenda quais características tem para tornar o desenvolvimento de Ler o artigo completo

Node.js: por que esta tecnologia está crescendo?
node.js - notebook em mesa com tela mostrando código de programação

Noje.js está ganhando cada vez mais espaço no mercado e nesse artigo apresentamos alguns dos motivos para esse crescimento.

4 conhecimentos (essenciais) no Desenvolvimento Web Full Stack
desenvolvimento web full stack - computador com programa aberto que apresenta código de programação

Confira os destaques relacionados ao desenvolvimento web full stack, abrangendo assuntos que vão desde linguagens de programação à áreas de Ler o artigo completo

Veja todos os nossos artigos