Kết nối từ NodeJS đến PostgreSQL

Kết nối từ NodeJS đến PostgreSQL để lấy dữ liệu, thêm, sửa xóa… Chúng ta thử thực hiện để xem có gì khác khi kết nối với Mysql không nhé.



Tạo project NodeJS

Để thực tập kết nối từ NodeJS đến PostgreSQL, Đầu tiên cần tạo project NodeJS. Bạn tạo 1 folder tên node_pg (hoặc tên gì cũng được). Sau đó chuyển vào folder vừa tạo và chạy các lệnh sau. Chú ý pg là gói dùng để kết nối đến Postgres.

npm i express
npm i ejs
npm i pg
npm i

Tạo file server NodeJS

– Mở Visual Code, rồi tạo file index.js trong folder project

– Code trong fiie index.js để tạo ứng dụng, khai báo view , listen port

// index.js
const express = require("express");
const app = express();
const port = 3000;
app.set("view engine", "ejs");
app.set("views", "./views")

//Khai báo thông số kết nối postgre

// Định nghĩa route để lấy và hiện dữ liệu

app.listen(port, () =>{
console.log(`Ung dung dang chay voi port ${port}`);
});

Tạo database PostgreSQL

Cần phải có một database trong PostgreSQL để kết nối từ NodeJS, bạn tạo theo hướng dẫn sau. Còn để biết chi tiết các thao tác với database, table trong PostgresSQL thì xem bài này Quản trị PostgreSQL với pgAdmin4

– Mở pgAdmin4 tạo database banhang như hình

– Tiếp tục trong pgAdmin4, tạo table nha_sx như sau

– Nhập tên table là nha_sx rồi nhắp Columns để tạo các field như hình dưới:

– Chèn dữ liệu vào table: Nhắp phải chuột tại tên table mới tạo (nha_sx) , chọn Views/Edit Data => Chọn All Rows => Nhắp + để chèn vài record . Xem hình dưới

Vậy là đã có database, giớ chúng ta thực hiện kết nối đến PostgreSQL thôi.

Khai báo thông số kết nối từ NodeJS đến PostgreSQL

Để kết nối từ NodeJS đến PostgreSQL, bạn import class Client trong gói pg, rồi tạo đối tượng với các thông số user, password, host (mặc định là localhost) , port (mặc định 5432) , tên database ở bên phía PostgreSQL. Code như sau.

//Khai báo thông số kết nối postgre
const { Client } = require('pg');
var pg = new Client({
user: 'postgres',
password: '123',
host: 'localhost',
port: '5432',
database: 'banhang',
});

Đối tượng pg trả về là kết nối đến database , bạn dùng đối tượng này để tương tác với phía PostgreSQL

Tạo route để lấy và hiện dữ liệu

Bạn tạo route / (có thể khác, thoải mái) . Trong đó dùng hàm connect() của đối tượng pg đã tạo ở trên để kết nối . Sau đó dùng hàm query để gửi câu lệnh sql qua bên PostgreSQL để nó thực thi.

// Tạo  route để lấy và hiện dữ liệu
app.get("/", async (reg, res)=> {
await pg.connect()
.catch( err => console.error('Lỗi kết nối đến PostgreSQL', err))
.then(() => console.log('Connected to PostgreSQL database'));

let sql = "select id, ten from nha_sx";
let data = await pg.query(sql);
console.log(data.rows)
res.render("nhasx", { nhasx_arr:data.rows })
})

Hàm connect() và query() của đối tượng pg đều là hàm hoạt động theo async (bất đồng bộ), nên dùng await để đợi kết quả trả về. Hàm pg.query() trả về khá nhiều thông tin như rowCount – ố dòng ữ liệu, rows – các dòng dữ liệu, fields – các fields

Tạo view để hiện dữ liệu

Code ở trên đã nạp view nhasx , giờ thì bạn tạo file views/nhasx.ejs vả code để hiện dữ liệu

<h1>Danh sách nhà sản xuất</h1>
<% for( let nsx of nhasx_arr ) { %>
<p> <%=nsx.ten%> </p>
<% } %>

Xem thử:

Với các bước thực hiện như trên, Bạn thấy sao? Kết nối đến PostgreSQL từ NodeJS cũng đon giản và khá giống như kết nối đến Mysql. Cần tham khảo thểm thì xem ở đây nhé https://node-postgres.com/ , https://tembo.io/docs/getting-started/postgres_guides/connecting-to-postgres-with-nodejs