Introdução ao Trabalho com Bancos de Dados em JavaScript (Node.js)
\nO desenvolvimento web moderno raramente acontece sem interagir com bancos de dados. Seja para armazenar usuários, postagens de blog ou dados para análise — a capacidade de trabalhar com bancos de dados é uma habilidade obrigatória para todo desenvolvedor. Neste artigo, veremos dois dos tipos mais populares de bancos de dados: o relacional PostgreSQL e o orientado a documentos MongoDB. Escreveremos exemplos simples em JavaScript (Node.js) que ajudarão você a começar com ambos os sistemas.
\n\n1. Configuração do Ambiente e Instalação de Dependências
\nAntes de escrever código, você precisa instalar os drivers para Node.js interagir com os bancos de dados escolhidos. Para isso, crie um novo projeto e instale os pacotes via npm.
\n\nInstalando Drivers
\n- \n
- pg — um cliente popular para PostgreSQL. \n
- mongoose — um ODM (Object Document Mapper) para MongoDB que simplifica o trabalho com coleções. \n
mkdir db-example && cd db-example\nnpm init -y\nnpm install pg mongoose\n\nAgora seu ambiente está pronto para experimentos.
\n\n2. Trabalhando com PostgreSQL a partir do Node.js
\nPostgreSQL é um banco de dados relacional poderoso que usa SQL para consultas. Vamos nos conectar a um servidor local, criar uma tabela e realizar operações CRUD (Create, Read, Update, Delete) básicas.
\n\nConectando ao Banco de Dados
\nCrie um arquivo postgres.js e adicione o seguinte código para conexão:
const { Pool } = require('pg');\n\nconst pool = new Pool({\n user: 'your_username',\n host: 'localhost',\n database: 'testdb',\n password: 'your_password',\n port: 5432,\n});\n\nasync function connect() {\n try {\n const client = await pool.connect();\n console.log('Connected to PostgreSQL');\n client.release();\n } catch (err) {\n console.error('Connection error:', err);\n }\n}\n\nconnect();\n\nCriando uma Tabela e Inserindo Dados
\nAgora vamos adicionar uma função para criar a tabela users e inserir registros:
async function createTable() {\n const query = `\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL\n );\n `;\n await pool.query(query);\n console.log('Table users created');\n}\n\nasync function insertUser(name, email) {\n const query = 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *';\n const values = [name, email];\n const res = await pool.query(query, values);\n console.log('User added:', res.rows[0]);\n}\n\n// Example usage\ncreateTable().then(() => insertUser('Ivan', 'ivan@example.com'));\n\nLendo e Atualizando Dados
\nVamos obter todos os usuários e atualizar um email:
\nasync function getUsers() {\n const res = await pool.query('SELECT * FROM users');\n console.log('All users:', res.rows);\n}\n\nasync function updateUserEmail(id, newEmail) {\n const query = 'UPDATE users SET email = $1 WHERE id = $2 RETURNING *';\n const res = await pool.query(query, [newEmail, id]);\n console.log('User updated:', res.rows[0]);\n}\n\ngetUsers().then(() => updateUserEmail(1, 'ivan_new@example.com'));\n\nPostgreSQL é excelente para projetos onde a integridade dos dados e relacionamentos complexos entre tabelas são importantes.
\n\n3. Trabalhando com MongoDB a partir do Node.js
\nMongoDB é um banco de dados NoSQL que armazena dados em um formato semelhante a JSON (BSON). Ele é flexível e não requer um esquema rígido. Para trabalhar com ele, usaremos o Mongoose.
\n\nConectando ao MongoDB
\nCrie um arquivo mongo.js:
const mongoose = require('mongoose');\n\nconst connectDB = async