Antes de ensina-lo, esse é o meu post de número 1 na Dev.to, aqui eu estarei ensinando a como instalar, configurar e utilizar o Express, MongoDB e Mongoose em dezembro de 2024, lembrando que pode vir a ter modificações significativas, então, sempre confira a versão que está sendo utilizada e faça a documentação a sua aliada.
A aplicação seguirá alguns pontos como:
- O que é Express, MongoDB e Mongoose;
 - Instalação das tecnologias;
 - Configurando o arquivo index;
 - Editando o package.json;
 - Criando o Model/Schema;
 - Startando um projeto
 
Antes de mais nada, você saberia me dizer o que é o Express, MongoDB ou Mongoose? Então, siga os point é a sua definição básica e memoravel.
Express: É um framework para Node.js que oferece recursos para criação de servidores web. Ou seja, ele lida com requisições e respostas de forma rápida, organizada e eficiente.
MongoDB: É um banco de dados não relacional (NoSQL) que utiliza documentos BSON (semelhantes a JSON) para armazenar informações de forma rápida e flexível.
Mongoose: É um ODM (Object Data Modeling) e um dos assistentes mais famosos do MongoDB. Ele auxilia o banco de dados NoSQL a organizar informações, criando modelos para estruturar os dados que serão guardados.
Instalação
Comece abrindo o seu terminal e indo até a pasta de sua preferencia, no meu caso, eu vou na pasta "Documents".
Comando: cd nome-da-pasta
Comando MacOS: cd Documents
Após entrar na pasta 'Documents', cabe você criar e entrar na pasta desejada para começarmos a instalação.
Comando: mkdir nome-da-pasta && cd nome-da-pasta
Comando MacOS: mkdir tutorial-exmb && cd tutorial-exmb
P.s.: O operador "&&" serve para dizer que você QUER criar a pasta E entrar na pasta criada logo em seguida. Esse operador casa em diferentes ocasiões.
A partir daqui, vai de sua escolha se usará Javascript ou Typescript, mas fique tranquilo, eu disponibilizarei as duas formas.
Javascript:
npm init -y
npm install express mongodb mongoose
Typescript
npm init -y
# Instalar dependências principais
npm install express mongodb mongoose
# Instalar dependências de desenvolvimento para TypeScript e tipos
npm install -D typescript @types/node @types/express ts-node
# Criar o arquivo de configuração do TypeScript
npx tsc --init
P.s.: Não é obrigatório ter o MongoDB instalado localmente para utilizá-lo em projetos.
Configurando o arquivo index.js/.ts
# Criando a pasta src e entrando na pasta
mkdir src && cd src
# Criando o arquivo index.js/.ts
touch index.js/.ts
P.s.: Troque o index.js do package.json por index.ts, caso esteja utiliza o Typescript.
Arquivo index.js/.ts
/* 
* Caso esteja utilizando Typescript
import express from 'express';
import mongoose from 'mongoose';
*/
const express = require('express');
const mongoose = require('mongoose');
// Configuração do app
const app = express();
const PORT = 3000;
// Middleware para interpretar JSON
app.use(express.json());
// Conexão com o MongoDB usando Mongoose
const mongoURI = 'mongodb://localhost:27017/seu_banco_de_dados'; // Altere para seu URI do MongoDB
mongoose
  .connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    console.log('Conectado ao MongoDB com sucesso!');
  })
  .catch((err) => {
    console.error('Erro ao conectar ao MongoDB:', err.message);
  });
// Rotas básicas
app.get('/', (req, res) => {
  res.send('Bem-vindo ao servidor Express com MongoDB!');
});
// Porta onde o servidor será executado
app.listen(PORT, () => {
  console.log(`Servidor rodando em http://localhost:${PORT}`);
});
Editando o package.json com Javascript
# Se quiser utilizar o nodemon, instale com npm install nodemon
"scripts": {
  "start": "node index.js",          // Inicia a aplicação
  "dev": "nodemon index.js",         // Executa o app com nodemon (reinício automático)
  "lint": "eslint . --fix",          // Lint e correção automática do código
  "test": "jest"                     // Roda os testes usando Jest
}
Editando o package.json com Typescript
"scripts": {
  "start": "node dist/index.js",         // Executa o código já compilado
  "build": "tsc",                        // Compila o TypeScript para JavaScript
  "dev": "ts-node src/index.ts",         // Executa o TypeScript diretamente com ts-node
  "lint": "eslint . --ext .ts --fix",    // Lint do código TypeScript
  "test": "jest",                        // Testes com Jest
  "watch": "tsc --watch",                // Compila automaticamente ao salvar
  "clean": "rm -rf dist"                 // Limpa a pasta de build
}
Criando o Model/Schema
Começamos com a criação da pasta e arquivo seguindo o exemplo abaixo. Atente-se a extensão.
mkdir models && cd/models && touch user.model.js/.ts
Após a criação, utilizemos dessa forma.
Versão Javascript: Utilizando const/require com module.exports.
// user.model.js
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  username: {
    type: String,
    required: true,
    unique: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true,
  },
}, { timestamps: true });
module.exports = mongoose.model('User', userSchema);
Versão Typescript: Utilizando a versão mais atual de import/export.
// user.model.ts
import { model, Schema } from "mongoose";
const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
  },
  username: {
    type: String,
    required: true,
    unique: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true,
  },
}, { timestamps: true });
export const UserModel = mongoose.model('User', userSchema);
Dando start no projeto
Para testar agora o seu projeto e subir a aplicação para o navegador, vá no terminal e rode o comando: npm run start.
P.S.: Você pode utilizar o Bruno, Insomnia, Postman ou via CURL para receber a mensagem 'Bem-vindo ao servidor Express com MongoDB!' e começar a criar os métodos HTTP para o model User.
CHEGAMOS AO FINAL DO TUTORIAL :D
Parabéns! 🎉 Você agora configurou com sucesso um servidor básico usando Express, conectou-se a um banco de dados MongoDB com Mongoose, criou o primeiro Model e entendeu os fundamentos de como essas tecnologias trabalham juntas.
    
Top comments (0)