在使用資料庫時,開發人員經常面臨使用原始資料庫查詢或利用抽像出一些複雜性的函式庫之間的選擇。 Sequelize 就是這樣一個函式庫——一種流行的 Node.js ORM(物件關聯映射器),可與 PostgreSQL、MySQL 和其他關聯式資料庫搭配使用。在本教程中,我們將深入探討如何在 Node.js 上使用 Sequelize 連接 PostgreSQL 資料庫,包括安裝、設定、模型建立和執行 CRUD 操作。
Sequelize 透過在 SQL 查詢上提供抽象層來簡化資料庫互動。它在底層利用 pg 函式庫連接到 PostgreSQL。要開始使用 Sequelize,請按照以下步驟操作:
初始化您的項目
如果您要開始一個新項目,請初始化 Node.js 專案以建立 package.json 檔案:
npm init -y
安裝 Sequelize 和 PostgreSQL 驅動程式
安裝 Sequelize 以及 PostgreSQL 驅動程式 pg:
npm install pg sequelize
設定資料庫配置
在 Node.js 應用程式中,您首先需要定義 PostgreSQL 資料庫存取變數:
const user = '<postgres_user>'; const host = 'localhost'; const database = '<postgres_db_name>'; const password = '<postgres_password>'; const port = '<postgres_port>';
導入續集
從 Sequelize 匯入必要的物件:
const { Sequelize, Model, DataTypes } = require('sequelize');
初始化 Sequelize
使用您的資料庫設定建立一個新的 Sequelize 實例:
const sequelize = new Sequelize(database, user, password, { host, port, dialect: 'postgres', logging: false });
在這裡,我們指定方言:'postgres' 表示我們正在使用 PostgreSQL。我們也停用 SQL 查詢日誌記錄以保持控制台輸出乾淨,儘管您可以在偵錯期間啟用它。
Sequelize 中的模型代表資料庫中的表。每個模型都定義了對應表的結構並提供了與之互動的方法。
定義模型
假設您有一個名為 cats 的表,其中包含名稱和年齡列。您可以為該表定義 Sequelize 模型,如下所示:
class Cat extends Model {} Cat.init({ name: { type: DataTypes.STRING, allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }, { sequelize, modelName: 'cat', timestamps: false });
在此範例中:
- `Cat` extends Sequelize’s `Model` class. - `init()` sets up the model with column definitions and configuration. - We use `DataTypes.STRING` and `DataTypes.INTEGER` to define column types. - `timestamps: false` disables automatic timestamp fields (`createdAt` and `updatedAt`).
Sequelize 提供了一系列查詢資料庫的方法。以下是如何使用 Sequelize 檢索資料:
擷取所有記錄
從 cats 表中取得所有記錄:
const results = await Cat.findAll(); console.log(results);
findAll() 傳回一個承諾,解析為表示表中行的實例陣列。
限制檢索的欄位
如果您只需要某些列,請使用屬性選項:
const results = await Cat.findAll({ attributes: ['age'] }); console.log(results);
新增 WHERE 子句
要過濾結果,請使用 where 選項。例如,要找所有 8 歲的貓:
const results = await Cat.findAll({ where: { age: 8 } }); console.log(results);
找出所有 5 歲或以上的貓:
const { Op } = require('sequelize'); const results = await Cat.findAll({ where: { age: { [Op.gte]: 5 } } }); console.log(results);
應用排序與限制
對結果進行排序並限制傳回的行數:
const results = await Cat.findAll({ limit: 10, order: [ ['name', 'DESC'] ] }); console.log(results);
要將新記錄插入資料庫,請使用 create() 方法:
const name = 'Garfield'; const age = 8; const result = await Cat.create({ name, age }); console.log('New Cat:', result);
要更新現有記錄,請使用 update() 方法:
await Cat.update( { age: 9 }, { where: { name: 'Garfield' } } );
如果要更新所有行(小心此操作),請省略 where 子句:
await Cat.update( { age: 10 } );
在本教學中,我們探討如何使用 Sequelize 與 PostgreSQL 資料庫互動。我們首先安裝和配置 Sequelize,然後建立模型來表示資料庫表。
我們學習如何使用 Sequelize 的方法查詢、插入和更新資料。這個強大的 ORM 透過提供對 SQL 查詢的更高層級的抽象來簡化關聯式資料庫的使用。
要進一步探討 Sequelize 及其功能,請考慮以下資源:
透過利用 Sequelize,您可以簡化資料庫互動並更加專注於建立強大的應用程式。快樂編碼!
以上是如何將 PostgreSQL 與 Node.js 和 Sequelize 連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!