Tutorial Simples e Prático sobre Node.js e PostgreSQL
Aqui você aprende a conectar o Node.js ao PostgreSQL e utilizando Promisses. Tutorial sem enrolação e direto ao ponto!
Node.js e PostgreSQL
Uma das principais vantagens do Node.js é a sua simplicidade para criar e executar scripts. Em um minuto você cria um arquivo JavaScript e já pode executá-lo, isso é fantástico!
Sobre o PostgreSQL, na minha opinião, atualmente ele é melhor banco de dados relacional e ainda é Open Souce e totalmente gratuito. Já trabalho à muitos anos com PostgreSQL e ele nunca me decepcionou.
Sempre que preciso executar scripts mais complexos ou migrar alguma informação entre bases de dados, eu prefiro fazer isso com Node.js e PostgreSQL.
Driver de Conexão
Existem diversos drivers que conectam o Node.js ao PostgreSQL, mas o que eu mais gosto é o Node-Postgres (este é o link do NPM). Só para você ter uma ideia, este driver tem mais de 1 milhão de downloads semanais (no momento que escrevo este artigo).
Além disso, ele possui recursos bem avançados, como Pool de conexão, conexões TLS/SSL e Native Bindings. Um item que eu gosto muito é o suporte a Promises, uma vez que isso é algo bem importante quando você trabalha com código assíncrono.
Como fica o código?
Depois que o driver está instalado (dúvidas sobre a instalação ver o Get Started), é só criar um arquivo JavaScript e sair programando.
No exemplo abaixo, primeiramente é criado a conexão com o banco de dados, depois é realizada a criação de uma tabela, em seguida é feita inserção de registros e, por fim, é executada uma Query para mostrar os registros que estão armazenados:
let conn;
(async () => {
connect();
await createTable();
await insert();
await showRows();
})();
function connect() {
let { Client } = require('pg');
conn = new Client({
host: 'localhost',
database: 'tutorial_nodejs_pg',
user: 'postgres',
password: '123456',
port: 5432,
});
conn.connect();
}
async function createTable() {
await conn.query(`
create table if not exists people (
id integer not null,
name varchar,
primary key (id)
)
`);
console.log('Table created');
}
async function insert() {
let { rows } = await conn.query(
`insert into people (id, name) values (1, 'Paul McCartney'), (2, 'John Lennon') returning *`
);
console.log(`Rows inserted: ${rows.length}`);
}
async function showRows() {
let { rows } = await conn.query(`select * from people`);
for (const row of rows) {
console.log(row);
}
}
Veja que para criar a conexão, basta importar e instanciar a classe Client. A partir disso, é só passar os comandos SQL para função Query. É fácil perceber como o código fica simples e de fácil entendimento.
Dúvidas ou sugestões é só entrar em contato. Abraço.