Como criar um CRUD completo no Express.js?

Um CRUD no Express.js permite criar, ler, atualizar e deletar registros em um banco de dados de forma estruturada.

Como criar um CRUD completo no Express.js?

O termo CRUD (Create, Read, Update, Delete) representa as operações básicas de manipulação de dados em sistemas. No Express.js, podemos criar um CRUD para gerenciar registros em um banco de dados de forma eficiente.

1. Instalando dependências

Antes de começar, instale os pacotes necessários:

npm install express mysql2 sequelize dotenv

2. Configurando a conexão com o banco de dados

Crie um arquivo .env para armazenar as credenciais:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=senha
DB_NAME=crud_db
DB_DIALECT=mysql

Agora, crie um arquivo database.js para gerenciar a conexão com o banco:

const { Sequelize } = require('sequelize');
require('dotenv').config();

const sequelize = new Sequelize(
    process.env.DB_NAME,
    process.env.DB_USER,
    process.env.DB_PASSWORD,
    {
        host: process.env.DB_HOST,
        dialect: process.env.DB_DIALECT,
    }
);

const conectarBanco = async () => {
    try {
        await sequelize.authenticate();
        console.log('Conectado ao MySQL');
    } catch (error) {
        console.error('Erro ao conectar ao MySQL:', error);
        process.exit(1);
    }
};

module.exports = { sequelize, conectarBanco };

3. Criando um modelo de usuário

Crie um modelo Usuario.js para estruturar os dados:

const { Sequelize, DataTypes } = require('sequelize');
const { sequelize } = require('../database');

const Usuario = sequelize.define('Usuario', {
    id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
    nome: { type: DataTypes.STRING, allowNull: false },
    email: { type: DataTypes.STRING, allowNull: false, unique: true }
}, {
    timestamps: false,
});

module.exports = Usuario;

4. Criando rotas CRUD

Agora, implementamos as rotas CRUD no Express.js:

const express = require('express');
const { conectarBanco } = require('./database');
const Usuario = require('./models/Usuario');

const app = express();
app.use(express.json());

conectarBanco();

// Criar usuário
app.post('/usuarios', async (req, res) => {
    try {
        const novoUsuario = await Usuario.create(req.body);
        res.status(201).json(novoUsuario);
    } catch (error) {
        res.status(400).json({ erro: 'Erro ao criar usuário' });
    }
});

// Listar usuários
app.get('/usuarios', async (req, res) => {
    const usuarios = await Usuario.findAll();
    res.json(usuarios);
});

// Buscar usuário por ID
app.get('/usuarios/:id', async (req, res) => {
    const usuario = await Usuario.findByPk(req.params.id);
    if (!usuario) return res.status(404).json({ erro: 'Usuário não encontrado' });
    res.json(usuario);
});

// Atualizar usuário
app.put('/usuarios/:id', async (req, res) => {
    const usuario = await Usuario.findByPk(req.params.id);
    if (!usuario) return res.status(404).json({ erro: 'Usuário não encontrado' });
    await usuario.update(req.body);
    res.json({ mensagem: 'Usuário atualizado', usuario });
});

// Deletar usuário
app.delete('/usuarios/:id', async (req, res) => {
    const usuario = await Usuario.findByPk(req.params.id);
    if (!usuario) return res.status(404).json({ erro: 'Usuário não encontrado' });
    await usuario.destroy();
    res.json({ mensagem: 'Usuário deletado' });
});

app.listen(3000, () => console.log('Servidor rodando na porta 3000'));

Conclusão

A implementação de um CRUD no Express.js permite criar, ler, atualizar e excluir registros do banco de dados. Com Sequelize, conseguimos manipular os dados de maneira organizada e eficiente.

O CRUD é a base da maioria das aplicações modernas, sendo essencial para sistemas de gerenciamento de usuários, produtos e dados.

Empresas como Amazon e Spotify utilizam operações CRUD para manter registros organizados e permitir modificações em tempo real. A combinação de Express.js com Sequelize permite criar APIs escaláveis e de fácil manutenção.

Algumas aplicações:

  • Gerenciamento de usuários
  • Controle de produtos em lojas virtuais
  • Sistemas de agendamento e reservas
  • Registro de pedidos em e-commerces
  • APIs RESTful escaláveis

Dicas para quem está começando

  • Use sequelize.sync() para sincronizar tabelas automaticamente.
  • Trate erros ao buscar registros inexistentes.
  • Evite expor informações sensíveis nas respostas da API.
  • Utilize middlewares para validar os dados antes de salvar no banco.
  • Teste cada endpoint com Postman ou Insomnia antes da implementação final.

Contribuições de Lucas Fernandes

Compartilhe este tutorial: Como criar um CRUD completo no Express.js?

Compartilhe este tutorial

Continue aprendendo:

Como fazer upload de arquivos em uma API Node.js?

O upload de arquivos em uma API Node.js pode ser feito com a biblioteca Multer, permitindo armazenar imagens, PDFs e outros formatos.

Tutorial anterior

Como configurar um servidor HTTPS no Express.js?

O Express.js permite configurar um servidor HTTPS utilizando certificados SSL para comunicação segura entre cliente e servidor.

Próximo tutorial