如何使用 Node.js 連接到 PostgreSQL 數據庫
Node.js 在連接到 PostgreSQL 時提供了很大的靈活性,但它也使整個過程變得簡單。
大多數現實世界的應用程序以一種或另一種方式與數據庫交互。數據庫使持久化、分析數據和與數據交互變得容易。
大多數編程語言都支持將應用程序連接到 PostgreSQL 等數據庫。本文了解如何使用 node-postgres 模塊將 Node 應用程序連接到 PostgreSQL。
如何開始
要開始連接到本地數據庫,您需要安裝 PostgreSQL 服務器。
PostgresSQL因其靈活性和強大功能而成為最常見的關系數據庫系統之一。如果您的項目很復雜,或者您正在尋找包含開源精神的解決方案,您可能會考慮使用它作為 MySQL 的替代品。
創建 Node 應用程序
第一步是創建一個 Node 應用程序,您將使用它來測試連接代碼。在您的首選文件夾中,創建一個新文件夾。
mkdir postgres-node
導航到您創建的文件夾并初始化 npm。
cd postgres-node
npm init -y
此命令應生成一個package.json文件。
接下來,創建一個新文件并將其命名為index.js。您將在此文件中將 Node 連接到 PostgreSQL。
使用 node-postgres 模塊
node-postgres模塊是一個 npm 包,它允許您連接到 PostgreSQL 數據庫并與之交互。使用 node-postgres 模塊可以使用兩個選項將 Node 與 PostgreSQL 連接:單個客戶端或連接池。那么你應該使用什么?
如果一次只需要一個靜態連接,請使用單個客戶端。但是,如果您需要使用并發和多個請求,請使用連接池。
安裝 node-postgres
在終端中運行以下命令以安裝 node-postgres。
npm install pg
如果您使用 node >= 14.x,則需要稍后安裝 pg@8.2.xo。您可以通過像這樣將其添加到安裝命令后綴來指定版本號。
npm install pg=8.7.3
連接到 PostgreSQL
node-postgres 模塊需要以下值才能連接到 PostgreSQL 數據庫:
- PGUSER – 要連接的 PostgreSQL 用戶名。
- PGHOST – 要連接的服務器主機的名稱。
- PGPASSWORD – PostgreSQL 服務器的密碼。
- PGD??ATABASE – 您要連接的數據庫的名稱。
- PGPORT – 在服務器主機上連接的端口號。
創建一個 .env 文件并添加這些變量,替換數據庫中的相應值:
PGUSER=<PGUSER>
PGHOST=<PGHOST>
PGPASSWORD=<PGPASSWORD>
PGDATABASE=<PGDATABASE>
PGPORT=<PGPORT>
安裝 dotenv 包以訪問 .env 文件:
npm install dotenv
在index.js中,導入并配置 dotenv:
const dotenv = require("dotenv")
dotenv.config()
使用單個客戶端連接到 PostgreSQL 數據庫
下面的代碼展示了如何使用單個客戶端將 Node 連接到 PostgreSQL 服務器:
const { Client } = require("pg")
const dotenv = require("dotenv")
dotenv.config()
const connectDb = async () => {
try {
const client = new Client({
user: process.env.PGUSER,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
password: process.env.PGPASSWORD,
port: process.env.PGPORT
})
await client.connect()
const res = await client.query('SELECT * FROM some_table')
console.log(res)
await client.end()
} catch (error) {
console.log(error)
}
}
connectDb()
使用連接池
如前所述,連接池允許您向服務器發出多個連接請求:
const { Pool } = require("pg");
const dotenv = require("dotenv");
dotenv.config();
const connectDb = async () => {
try {
const pool = new Pool({
user: process.env.PGUSER,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
password: process.env.PGPASSWORD,
port: process.env.PGPORT,
});
await pool.connect()
const res = await pool.query('SELECT * FROM clients')
console.log(res)
await pool.end()
} catch (error) {
console.log(error)
}
}
connectDb()
上面的示例讓您可以通過 .env 文件控制數據庫配置。但是,您也可以使用標準環境變量提供這些配置值。這種方法使您可以在啟動時輕松更改配置。
考慮以下連接代碼:
const connectDb = async () => {
try {
const pool = new Pool();
const res = await pool.query('SELECT * FROM clients')
console.log(res)
await pool.end()
} catch (error) {
console.log(error)
}
}
在這個程序中,初始化 Pool 時,您沒有將連接對象作為參數傳遞。相反,您必須在調用程序時指定連接詳細信息,如下所示:
PGUSER=<PGUSER> \
PGHOST=<PGHOST> \
PGPASSWORD=<PGPASSWORD> \
PGDATABASE=<PGDATABASE> \
PGPORT=<PGPORT> \
node index.js
像這樣將 Node 連接到 PostgreSQL 可以讓您編寫更可重用的程序。
使用 PostgreSQL 做更多事情
要創建與數據庫交互的應用程序,您必須先將其連接到數據庫。在本文中,您學習了如何使用 node-Postgres 模塊將 Node 連接到 PostgreSQL 數據庫。
除了 PostgreSQL,您還可以在應用程序中使用其他數據庫管理系統,例如 MySQL。您選擇的數據庫工具應該與您的數據需求最兼容。