Como conectar uma API Node.js a um banco de dados MySQL?
O MySQL é um dos bancos de dados relacionais mais utilizados no mundo. No Node.js, podemos conectá-lo usando bibliotecas como mysql2
ou um ORM como o Sequelize.
1. Instalando as dependências
Antes de conectar ao MySQL, precisamos instalar o Sequelize e o driver do MySQL:
npm install sequelize mysql2 dotenv
2. Configurando a conexão
Crie um arquivo .env
para armazenar as credenciais do banco de dados:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=senha
DB_NAME=meubanco
DB_DIALECT=mysql
Agora, crie um arquivo database.js
para gerenciar a conexão:
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. Integrando a conexão com o servidor
No arquivo server.js
, importe a conexão:
const express = require('express');
const { conectarBanco } = require('./database');
const app = express();
app.use(express.json());
conectarBanco();
app.listen(3000, () => console.log('Servidor rodando na porta 3000'));
4. Criando um modelo de dados com Sequelize
Agora, podemos definir um modelo de dados para armazenar informações no MySQL. Exemplo de um modelo para usuários:
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;
5. Criando uma rota para salvar dados
Podemos criar uma rota para cadastrar usuários no banco:
const Usuario = require('./models/Usuario');
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' });
}
});
Agora, podemos enviar uma requisição POST para http://localhost:3000/usuarios
com um JSON:
{
"nome": "João",
"email": "joao@email.com"
}
Conclusão
A integração entre Node.js e MySQL com Sequelize permite manipular bancos relacionais de maneira eficiente. O uso de ORMs simplifica a escrita de consultas e facilita a manutenção do código.
Por que usar Sequelize para conectar APIs ao MySQL?
O MySQL é um dos bancos de dados relacionais mais utilizados no mundo, sendo amplamente adotado por grandes empresas e startups. Com Sequelize, conseguimos mapear tabelas para objetos JavaScript, tornando a manipulação de dados mais intuitiva.
Empresas como Uber, Airbnb e PayPal utilizam bancos relacionais para gerenciar milhões de registros. Frameworks modernos como NestJS e Next.js oferecem suporte nativo para integração com bancos SQL.
Algumas aplicações:
- Armazenamento de usuários e autenticação
- Gestão de pedidos e transações em e-commerces
- Aplicações corporativas que exigem estruturação de dados
- Integração com sistemas legados baseados em SQL
- Gerenciamento de grandes volumes de informações
Dicas para quem está começando
- Use
sequelize.authenticate()
para testar a conexão. - Armazene as credenciais do banco em variáveis de ambiente.
- Defina relações entre tabelas usando Sequelize para organizar os dados.
- Utilize
timestamps: false
caso não queira campos de data automáticos. - Teste consultas SQL com ferramentas como MySQL Workbench ou DBeaver.
Contribuições de Lucas Fernandes