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.
Por que CRUD é fundamental para aplicações web?
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