會員中心
文章
算命
討論區
main article image

初識 Sequelize:從零開始的 ORM 之旅

分享
2025-06-11

什麼是 Sequelize?

Sequelize 是一款 Node.js 的 ORM(Object-Relational Mapping) 工具,允許開發者以面向物件的方式操作資料庫,大幅簡化 SQL 語句的撰寫。它支援多種資料庫系統,如 PostgreSQL、MySQL、SQLite 和 Microsoft SQL Server 等,讓資料庫操作變得更加靈活與便捷。

在專案中引入 Sequelize,可以讓開發者輕鬆進行資料庫操作,無需撰寫複雜的 SQL 查詢。以下是一些 Sequelize 的主要優勢

  • 跨資料庫支援:Sequelize 支援多種資料庫,能夠讓開發者在使用不同資料庫時擁有相同的操作體驗。
  • 強大的查詢功能:透過 Sequelize 的模型(Model),可以直觀地進行資料查詢、新增、修改及刪除等操作。
  • 資料驗證與關聯:支援模型驗證與關聯定義,讓資料庫關係的處理更加容易,例如一對多、多對多關係的配置。

使用場景

Sequelize 最常見的使用場景包括建設 Web 應用後端、建立 RESTful API,以及需要大規模資料庫操作的專案。例如,在開發線上商城時,可以利用 Sequelize 來管理用戶訂單、商品資料以及庫存等資訊,幫助開發者專注於業務邏輯,而非底層的資料庫語法細節。

此外,Sequelize 易於維護和擴展,並且具有活躍的社群支援,無論是在小型專案還是大型企業應用中,都具有很大的彈性與擴展性。

Sequelize 的初始化與基本配置

要在 Node.js 專案中使用 Sequelize,需先完成安裝。可以透過 npmyarn 來安裝 Sequelize 及所需資料庫驅動:

yarn add sequelize mysql2

安裝完成後,可以開始進行 Sequelize 的初始化配置。以下是一個基本的範例:

const { Sequelize } = require('sequelize');

const sequelize = new Sequelize('database', 'username', 'password', {
 host: 'localhost',
 dialect: 'mysql',
});

連接資料庫

在成功初始化 Sequelize 後,便可嘗試連接資料庫:

try {
 await sequelize.authenticate();
 console.log('Connection has been established successfully.');
} catch (error) {
 console.error('Unable to connect to the database:', error);
}

這裡的 authenticate 方法用於驗證資料庫連線,若成功輸出成功訊息,否則將錯誤訊息輸出至控制台。

模型定義

要使用 Sequelize 操作資料庫,需定義對應的 Model(模型)。例如,定義一個 User 模型:

const { DataTypes } = require('sequelize');
const User = sequelize.define('User', {
 username: {
 type: DataTypes.STRING,
 allowNull: false,
 },
 email: {
 type: DataTypes.STRING,
 unique: true,
 },
});

上述程式碼定義了一個 User 模型,包含 usernameemail 欄位,並設定了資料欄位的屬性,如不可為空和唯一性限制。

使用 Sequelize 進行資料操作

在成功建立模型後,便可進行 CRUD(建立、讀取、更新、刪除)操作。以下是一些常見的 Sequelize 資料操作範例:

1. 新增資料

const user = await User.create({
 username: 'JohnDoe',
 email: '[email protected]',
});
console.log(user.toJSON());

2. 查詢資料

// 查詢所有用戶
const users = await User.findAll();
console.log(users);

// 根據條件查詢
const specificUser = await User.findOne({
 where: { username: 'JohnDoe' },
});
console.log(specificUser);

3. 更新資料

await User.update({ username: 'JaneDoe' }, {
 where: { email: '[email protected]' },
});

4. 刪除資料

await User.destroy({
 where: { username: 'JaneDoe' },
});

這些範例展示了如何使用 Sequelize 執行各種資料庫操作,既簡單又直觀,並且可以自定義複雜的查詢條件,是一套非常強大的工具。

交易處理

在需要批次處理多個操作時,使用交易(transaction)管理可確保資料一致性:

const t = await sequelize.transaction();
try {
 await User.create({ username: 'Alice', email: '[email protected]' }, { transaction: t });
 await t.commit();
} catch (error) {
 await t.rollback();
}

Sequelize 提供了完善的交易管理功能,能夠在出錯時及時回滾,保證資料的一致性與完整性。

總結與未來展望

Sequelize 是一款功能豐富、支持多種資料庫的 ORM 工具,能顯著提高開發效率並降低 SQL 注入的風險。透過本文的介紹,相信讀者已經對 Sequelize 有了全面的了解,並能夠在實際專案中靈活運用。

無論是從易用性、擴充性,還是社群支援來說,Sequelize 都是 Node.js 開發者的一個不錯選擇。未來,Sequelize 可繼續應用於更複雜的業務場景,比如智慧數據分析、多租戶系統等,幫助開發者實現更高效的資料管理與操作。

透過本文,你已經了解到 Sequelize 的基礎安裝與配置,如何定義模型以及進行基於模型的 CRUD 操作。同時,也涉及了一些進階主題,例如交易處理等。實踐這些知識,可以進一步在實際開發中提高代碼質量與可維護性。