Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um restaurante. A cozinha, com seus ingredientes e receitas, representa seu banco de dados MySQL. Os garçons, que anotam os pedidos e trazem os pratos, são sua API construída com Node.js e o pacote mysql2. Este pacote é a ponte que permite à sua aplicação “conversar” com o MySQL, buscar informações e realizar operações.
Dominar essa integração é essencial para APIs modernas, pois a grande maioria delas precisa persistir dados. Imagine um e-commerce sem um banco de dados para armazenar produtos, usuários e pedidos. Seria impensável!
Nesta aula, vamos implementar a conexão com um banco de dados MySQL usando o pacote mysql2 em um ambiente Node.js/Express, seguindo as melhores práticas e considerando as especificidades do HostGator Plano M.
No contexto do ecossistema Node.js/Express, o mysql2 se encaixa como um componente vital para a camada de acesso a dados, permitindo que sua aplicação interaja com o MySQL de forma eficiente e segura.
Conceito Fundamental (7 min)
O pacote mysql2 é uma interface que viabiliza a comunicação entre sua aplicação Node.js e um servidor MySQL. Ele oferece uma série de métodos para executar consultas SQL, gerenciar transações e lidar com conexões. Utilizando uma conexão em pool, o mysql2 otimiza o acesso ao banco de dados, reutilizando conexões existentes em vez de criar novas a cada solicitação, melhorando significativamente o desempenho.
A terminologia importante inclui: conexão, pool de conexões, query, transação, prepared statement. Em produção, o mysql2 é utilizado em aplicações web, microsserviços, APIs REST, e qualquer outro sistema que necessite persistir dados em um banco de dados MySQL.
Ele se integra com ORMs (Object-Relational Mappers) como Sequelize e TypeORM, simplificando ainda mais o desenvolvimento. Entretanto, usar mysql2 diretamente proporciona maior controle e performance, sendo ideal para cenários que demandam alta eficiência.
As vantagens incluem: alta performance, suporte a prepared statements (segurança contra SQL injection), API promissora, e integração perfeita com o ecossistema Node.js. Como desvantagem, exige conhecimento de SQL.
Implementação Prática (10 min)
// Importa o pacote mysql2
const mysql = require('mysql2/promise');
// Configurações da conexão, adaptadas para HostGator Plano M
const dbConfig = {
host: 'localhost', // Host do seu banco de dados no HostGator
user: 'seu_usuario', // Seu usuário MySQL
password: 'sua_senha', // Sua senha MySQL
database: 'seu_banco_de_dados', // Nome do seu banco de dados
waitForConnections: true, // Aguarda por conexões disponíveis
connectionLimit: 10, // Limite de conexões no pool
queueLimit: 0, // Limite de requisições na fila (0 para ilimitado)
};
async function executarQuery(sql, valores) {
try {
const pool = await mysql.createPool(dbConfig); // Cria o pool de conexões
const [rows, fields] = await pool.execute(sql, valores); // Executa a query com prepared statements
pool.end(); // Fecha o pool após a execução - IMPORTANTE no HostGator Plano M
return rows;
} catch (error) {
console.error('Erro ao executar query:', error); // Log de erro detalhado
throw error; // Repassa o erro para tratamento posterior
}
}
// Exemplo de uso
async function buscarUsuarios() {
const usuarios = await executarQuery('SELECT * FROM usuarios', []); // Busca todos os usuários
console.log('Usuários:', usuarios);
}
buscarUsuarios();
// Teste básico
async function testarConexao() {
try {
await executarQuery('SELECT 1', []);
console.log('Conexão com o banco de dados bem-sucedida!');
} catch (error) {
console.error('Erro ao conectar ao banco de dados:', error);
}
}
testarConexao();
Exercício Hands-On (5 min)
Desafio: crie uma função inserirUsuario(nome, email) que insere um novo usuário no banco de dados.
Solução:
async function inserirUsuario(nome, email) {
const resultado = await executarQuery('INSERT INTO usuarios (nome, email) VALUES (?, ?)', [nome, email]);
console.log('Usuário inserido com ID:', resultado.insertId);
}
inserirUsuario('João Silva', '[email protected]');
Testes e Validação:
Verifique se o novo usuário foi inserido corretamente no banco de dados utilizando um cliente MySQL como o phpMyAdmin ou MySQL Workbench.
Troubleshooting:
Erro comum: ER_ACCESS_DENIED_ERROR. Verifique as credenciais de acesso ao banco de dados (usuário, senha, host, nome do banco de dados) no arquivo dbConfig.
Próximos Passos:
- Explore outros métodos do
mysql2, como transações e prepared statements. - Integre o
mysql2com um framework como o Express.js para construir APIs REST. - Aprenda sobre ORMs como Sequelize e TypeORM para abstrair a interação com o banco de dados.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!