DEV Community

Thaissa Carvalho dos Santos
Thaissa Carvalho dos Santos

Posted on

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.

Top comments (0)