Introdução ao trabalho com bancos de dados em JavaScript
O desenvolvimento web moderno em JavaScript é impensável sem a interação com bancos de dados. O Node.js fornece ferramentas poderosas para trabalhar tanto com bancos de dados relacionais (SQL) quanto com bancos de dados orientados a documentos (NoSQL). Neste artigo, vamos detalhar a conexão e a execução das operações principais com os dois SGBDs mais populares no ecossistema JavaScript: PostgreSQL e MongoDB.
Você aprenderá como instalar os drivers, configurar a conexão, executar operações CRUD (Create, Read, Update, Delete) e fazer a escolha correta entre SQL e NoSQL para o seu projeto.
Preparação do ambiente
Para trabalhar com os exemplos, você precisará do Node.js instalado (versão 18+) e do gerenciador de pacotes npm. Certifique-se de que os bancos de dados estejam rodando localmente ou acessíveis remotamente.
1. Trabalhando com PostgreSQL no Node.js
PostgreSQL é um poderoso banco de dados relacional de código aberto. Para trabalhar com ele no Node.js, usaremos a biblioteca pg — o cliente oficial.
Instalação e conexão
npm install pgVamos criar o arquivo db.js para configurar o pool de conexões:
const { Pool } = require('pg');
const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'secret', port: 5432,});
module.exports = pool;Operações CRUD com PostgreSQL
Vamos considerar as consultas básicas na tabela users:
Criação da tabela (CREATE)
const createTable = async () => { const query = ` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, age INTEGER, created_at TIMESTAMP DEFAULT NOW() ); `; await pool.query(query); console.log('Tabela users criada');};Inserção de dados (INSERT)
const addUser = async (name, email, age) => { const text = 'INSERT INTO users(name, email, age) VALUES($1, $2, $3) RETURNING *'; const values = [name, email, age]; const res = await pool.query(text, values); console.log('Usuário adicionado:', res.rows[0]); return res.rows[0];};
// UsoaddUser('Ivan Petrov', 'ivan@example.com', 30);Leitura de dados (SELECT)
const getUsers = async (ageLimit) => { const res = await pool.query( 'SELECT * FROM users WHERE age > $1 ORDER BY created_at DESC', [ageLimit] ); return res.rows;};
// Obter usuários com mais de 25 anosgetUsers(25).then(users => console.log(users));Atualização e exclusão (UPDATE / DELETE)
const updateUser = async (id, newName) => { const res = await pool.query( 'UPDATE users SET name = $1 WHERE id = $2 RETURNING *', [newName, id] ); return res.rows[0];};
const deleteUser = async (id) => { await pool.query('DELETE FROM users WHERE id = $1', [id]); console.log(`Usuário com id ${id} excluído`);};Importante: Sempre use consultas parametrizadas ($1, $2) para prevenir injeção de SQL.
2. Trabalhando com MongoDB no Node.js
MongoDB é o banco de dados NoSQL mais popular, armazenando dados em formato de documentos semelhantes a JSON. Para trabalhar com ele, usaremos o driver oficial mongodb ou a popular biblioteca ODM mongoose.
Instalação e conexão (usando mongoose)
npm install mongooseconst mongoose = require('mongoose');
const connectDB = async () => { try { await mongoose.connect('mongodb://localhost:27017/mydb'); console.log('MongoDB conectado'); } catch (error) { console.error('Erro de conexão:', error); }};
connectDB();