crud com mongodb
JavaScript

MongoDB com Node.js na Prática | Criando uma API CRUD Completa com Express

Se você está aprendendo Node.js e deseja criar aplicações profissionais, em algum momento precisará armazenar dados em um banco de dados. Uma das combinações mais utilizadas no mercado é Node.js + Express + MongoDB + Mongoose, permitindo desenvolver APIs REST modernas, rápidas e escaláveis.

Neste artigo você aprenderá como conectar uma aplicação Node.js ao MongoDB, criar uma API REST completa utilizando Express e implementar todas as operações do CRUD (Create, Read, Update e Delete) utilizando o Mongoose.

Ao final, você terá uma estrutura semelhante à utilizada em projetos reais.


Assista à aula completa

Antes de começar, você também pode acompanhar a aula prática no YouTube, onde todo o projeto é desenvolvido passo a passo.

Vídeo: MongoDB com Node.js na Prática | Criando uma API CRUD Completa com Express


O que é o MongoDB?

O MongoDB é um banco de dados NoSQL orientado a documentos.

Ao contrário dos bancos relacionais tradicionais, como MySQL ou PostgreSQL, ele não trabalha com tabelas e linhas.

Os dados são armazenados em documentos no formato semelhante ao JSON.

Exemplo:

{
    "nome": "Notebook",
    "preco": 3500,
    "estoque": 12
}

Essa estrutura oferece maior flexibilidade para armazenar informações sem precisar alterar tabelas sempre que novos campos forem adicionados.


O que é o Mongoose?

O Mongoose é uma biblioteca para Node.js responsável por facilitar a comunicação entre a aplicação e o MongoDB.

Com ele podemos:

  • criar Schemas;
  • definir Models;
  • validar dados;
  • consultar documentos;
  • atualizar registros;
  • excluir documentos.

Na prática, o Mongoose funciona como uma camada entre sua aplicação e o banco de dados.


Tecnologias utilizadas

Neste projeto utilizamos:

  • JavaScript
  • Node.js
  • Express.js
  • MongoDB
  • Mongoose
  • Thunder Client
  • MongoDB Compass

Estrutura do projeto

Uma boa organização facilita a manutenção da aplicação.

Nossa estrutura fica semelhante a esta:

projeto/

controllers/
produtoController.js

models/
Produto.js

routes/
produtoRoutes.js

config/
database.js

server.js

Separar responsabilidades deixa o código mais organizado e facilita futuras evoluções.


Instalando as dependências

Primeiro inicialize o projeto:

npm init -y

Depois instale as bibliotecas:

npm install express mongoose

Caso utilize atualização automática do servidor:

npm install --save-dev nodemon

Criando a conexão com o MongoDB

Após instalar as dependências, criamos a conexão.

Exemplo:

mongoose.connect("mongodb://localhost:27017/produtos");

Uma curiosidade interessante é que o MongoDB cria o banco automaticamente quando os primeiros dados são gravados.

Ou seja, não é necessário criar o banco manualmente antes de utilizar.


Criando o Schema

O Schema define quais informações serão armazenadas.

Exemplo:

const ProdutoSchema = new mongoose.Schema({

    nome: String,

    preco: Number,

    estoque: Number

});

Ele funciona como um “modelo” para todos os documentos daquela coleção.


Criando o Model

Após definir o Schema, criamos o Model.

const Produto = mongoose.model("Produto", ProdutoSchema);

É através do Model que realizamos todas as operações no banco.


Criando o Controller

O Controller concentra toda a lógica da aplicação.

Por exemplo:

  • cadastrar produtos;
  • listar produtos;
  • buscar por ID;
  • atualizar registros;
  • excluir documentos.

Essa separação torna o projeto muito mais organizado.


Criando as rotas

As rotas são responsáveis por receber as requisições HTTP.

Exemplo:

GET
POST
PUT
DELETE

Cada rota chama um método do Controller correspondente.


Operações do CRUD

CREATE

Insere novos documentos no banco.

Exemplo:

POST /produtos

READ

Lista todos os produtos cadastrados.

GET /produtos

Também podemos buscar um documento específico:

GET /produtos/:id

UPDATE

Atualiza um documento existente.

PUT /produtos/:id

O Mongoose localiza o documento e altera apenas os campos informados.


DELETE

Remove um documento do banco.

DELETE /produtos/:id

Após a exclusão, o documento deixa de existir na coleção.


Testando a API

Durante o desenvolvimento utilizamos o Thunder Client, uma extensão do Visual Studio Code que permite enviar requisições HTTP.

Com ela podemos testar facilmente:

  • GET
  • POST
  • PUT
  • DELETE

Sem precisar criar um frontend.


Visualizando os dados

Enquanto enviamos requisições pelo Thunder Client, podemos acompanhar os documentos sendo criados no MongoDB Compass, interface gráfica oficial do MongoDB.

Isso facilita muito o aprendizado e a depuração da aplicação.


Vantagens dessa arquitetura

Separar a aplicação em:

  • Models
  • Controllers
  • Routes

permite:

  • código organizado;
  • manutenção mais simples;
  • reutilização de lógica;
  • facilidade para trabalhar em equipe;
  • crescimento do projeto.

Essa estrutura é utilizada em inúmeros projetos profissionais.


Principais dúvidas de quem está começando

O MongoDB cria o banco automaticamente?

Sim. O banco e a coleção são criados quando os primeiros documentos são gravados.


Preciso criar tabelas?

Não.

O MongoDB utiliza coleções e documentos.


O Mongoose é obrigatório?

Não.

É possível utilizar o driver oficial do MongoDB.

Porém, o Mongoose facilita bastante o desenvolvimento e é amplamente utilizado.


Posso utilizar MongoDB em aplicações grandes?

Sim.

Empresas de todos os tamanhos utilizam MongoDB em produção devido à sua flexibilidade e escalabilidade.


Próximos passos

Depois de aprender CRUD com MongoDB, você pode evoluir para:

  • autenticação com JWT;
  • upload de imagens;
  • validações avançadas;
  • relacionamento entre coleções;
  • paginação;
  • filtros;
  • deploy da API.

Esses assuntos são fundamentais para desenvolver aplicações completas.


Conclusão

Neste projeto você aprendeu como criar uma API REST utilizando Node.js, Express, MongoDB e Mongoose, implementando todas as operações do CRUD em uma estrutura organizada e próxima da utilizada em aplicações reais.

Esse conhecimento serve como base para praticamente qualquer sistema backend desenvolvido com JavaScript.

Se você gostou deste conteúdo, continue acompanhando a série de Backend aqui no blog e no canal Desvendando o Código, onde publicamos novos projetos práticos todas as semanas.


Continue aprendendo

➡️ Assista à live completa deste projeto.

➡️ Veja também os artigos sobre Express.js, APIs REST, Node.js e JavaScript disponíveis aqui no blog.

➡️ Inscreva-se no canal Desvendando o Código para acompanhar novos projetos práticos de desenvolvimento Full Stack.

Leave a Reply

Your email address will not be published. Required fields are marked *