Trabalhando com Bancos de Dados em JavaScript (Node.js): PostgreSQL e MongoDB para Iniciantes
Ao desenvolver aplicações web em JavaScript (Node.js), quase sempre é necessário armazenar dados: usuários, pedidos, artigos ou logs. Para isso, são utilizados bancos de dados (BD). Neste guia, abordaremos os dois sistemas mais populares: o relacional PostgreSQL e o orientado a documentos MongoDB. Você aprenderá como se conectar a eles a partir do Node.js e realizar operações CRUD básicas (criação, leitura, atualização, exclusão).
O artigo é voltado para desenvolvedores iniciantes familiarizados com os fundamentos do JavaScript. Todos os exemplos de código podem ser executados no seu projeto.
1. PostgreSQL: Banco de Dados Relacional
PostgreSQL é um banco de dados SQL poderoso, onde os dados são armazenados em tabelas com tipos de campos rigorosos. Para trabalhar com ele no Node.js, usaremos o pacote pg.
1.1. Instalação e Conexão
Primeiro, instale o pacote via npm:
npm install pgCrie um arquivo db.js e configure a conexão com o BD local:
const { Pool } = require('pg');
const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'password', port: 5432,});
module.exports = pool;1.2. Criação de Tabela e Operações CRUD
Para começar, vamos criar a tabela users com os campos id, name e email. Em seguida, realizaremos todas as operações básicas.
const pool = require('./db');
// Criação da tabelaasync function createTable() { await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); `); console.log('Tabela users criada');}
// Inserção de dados (CREATE)async function addUser(name, email) { const result = await pool.query( 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *', [name, email] ); return result.rows[0];}
// Leitura de dados (READ)async function getUsers() { const result = await pool.query('SELECT * FROM users'); return result.rows;}
// Atualização de dados (UPDATE)async function updateUser(id, name) { const result = await pool.query( 'UPDATE users SET name = $1 WHERE id = $2 RETURNING *', [name, id] ); return result.rows[0];}
// Exclusão de dados (DELETE)async function deleteUser(id) { await pool.query('DELETE FROM users WHERE id = $1', [id]); console.log('Usuário excluído');}
// Exemplo de uso(async () => { await createTable(); const newUser = await addUser('Ivan', 'ivan@example.com'); console.log('Adicionado:', newUser);
const users = await getUsers(); console.log('Todos os usuários:', users);
await updateUser(1, 'Pedro'); await deleteUser(2);})();Importante: Sempre use consultas parametrizadas (através de $1, $2) para evitar injeções de SQL.
2. MongoDB: Banco de Dados NoSQL
MongoDB armazena dados em formato de documentos semelhantes a JSON (BSON). Para Node.js, utiliza-se o driver oficial mongodb ou a biblioteca popular mongoose. Neste exemplo, usaremos o driver.
2.1. Instalação e Conexão
npm install mongodbConexão com o MongoDB local (porta padrão 27017):
const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017';const client = new MongoClient(uri);
async function connect() { await client.connect(); console.log('Conectado ao MongoDB'); return client.db('mydb'); // banco de dados mydb}
module.exports = { connect, client };2.2. Operações CRUD com Coleção
No MongoDB, as tabelas são chamadas de coleções, e as linhas são