DEV Community

Thaissa Carvalho dos Santos
Thaissa Carvalho dos Santos

Posted on

4 1 1 2 1

Tutorial de Instalação: Express com MongoDB e Mongoose

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:

  1. O que é Express, MongoDB e Mongoose;
  2. Instalação das tecnologias;
  3. Configurando o arquivo index;
  4. Editando o package.json;
  5. Criando o Model/Schema;
  6. 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.

  1. 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.

  2. 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.

  3. 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
Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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}`);
});
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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.

Billboard image

Monitor more than uptime.

With Checkly, you can use Playwright tests and Javascript to monitor end-to-end scenarios in your NextJS, Astro, Remix, or other application.

Get started now!

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay