Trabalhando com bancos de dados em JavaScript: PostgreSQL e MongoDB na prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que um desenvolvedor precisa conhecer SQL e NoSQL?

O desenvolvimento web moderno em JavaScript (Node.js) raramente acontece sem interação com bancos de dados. A escolha entre SGBDs relacionais (PostgreSQL) e orientados a documentos (MongoDB) é uma das principais tarefas arquiteturais. Neste artigo, vamos abordar na prática como conectar-se a ambos os bancos de dados, realizar operações CRUD e escolher a ferramenta adequada para cada tarefa específica.

Usaremos bibliotecas populares: pg para PostgreSQL e mongoose para MongoDB. Todos os exemplos de código são em Node.js.



1. PostgreSQL no Node.js: abordagem relacional

1.1. Conexão e configuração

PostgreSQL é um SGBD relacional poderoso com suporte a SQL. Para trabalhar com ele no Node.js, instale o pacote pg:

npm install pg

Exemplo de conexão ao banco de dados local mydb:

const { Pool } = require('pg');

const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'secret', port: 5432,});

// Testando a conexãopool.query('SELECT NOW()', (err, res) => { if (err) { console.error('Erro de conexão:', err); } else { console.log('Conectado ao PostgreSQL:', res.rows[0].now); }});


1.2. Operações CRUD (criação, leitura, atualização, exclusão)

Vamos criar a tabela users e realizar operações básicas.

Criação da tabela:

const createTable = async () => {  const query = `    CREATE TABLE IF NOT EXISTS users (      id SERIAL PRIMARY KEY,      name VARCHAR(100) NOT NULL,      email VARCHAR(100) UNIQUE NOT NULL,      age INTEGER    );  `;  await pool.query(query);  console.log('Tabela users criada');};

createTable();

Inserção de dados (INSERT):

const addUser = async (name, email, age) => {  const query = 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *';  const values = [name, email, age];  const res = await pool.query(query, values);  console.log('Usuário adicionado:', res.rows[0]);};

addUser('João Silva', 'joao@example.com', 30);

Leitura de dados (SELECT):

const getUsers = async () => {  const res = await pool.query('SELECT * FROM users');  console.log('Todos os usuários:', res.rows);};

getUsers();

Atualização de dados (UPDATE):

const updateUserAge = async (id, newAge) => {  const query = 'UPDATE users SET age = $1 WHERE id = $2 RETURNING *';  const values = [newAge, id];  const res = await pool.query(query, values);  console.log('Usuário atualizado:', res.rows[0]);};

updateUserAge(1, 31);

Exclusão de dados (DELETE):

const deleteUser = async (id) => {  const query = 'DELETE FROM users WHERE id = $1 RETURNING *';  const values = [id];  const res = await pool.query(query, values);  console.log('Usuário excluído:', res.rows[0]);};

deleteUser(1);

Observe o uso de consultas parametrizadas ($1, $2). Isso protege contra injeção de SQL.



1.3. Quando escolher PostgreSQL?

  • Quando é necessária uma estrutura de dados rigorosa e suporte à integridade (chaves estrangeiras, transações).
  • Quando são necessárias consultas JOIN complexas e agregações.
  • Trabalho com dados financeiros ou criticamente importantes.
  • O projeto utiliza ORMs como Sequelize ou TypeORM.


2. MongoDB no Node.js: flexibilidade NoSQL

2.1. Conexão via Mongoose

MongoDB é um banco de dados orientado a documentos, onde os dados são armazenados em formato JSON-like (BSON). Para trabalhar com ele, instale o mongoose:

npm install mongoose

Conexão ao servidor local Mo

Blogs

Book Recommendations