跳至主要內容

Sequelize

Sequelize 是一個現代的 TypeScript 和 Node.js ORM,適用於 Oracle、Postgres、MySQL、MariaDB、SQLite 和 SQL Server 等。具有可靠的交易支援、關聯、立即載入和延遲載入、讀取複製等功能。

安裝依賴項

npm install sequelize sqlite3
# or
yarn add sequelize sqlite3

定義模型

import { Sequelize, DataTypes } from 'sequelize';

const sequelize = new Sequelize('sqlite::memory:');
const User = sequelize.define('User', {
username: DataTypes.STRING,
birthday: DataTypes.DATE,
});

持久化和查詢

const jane = await User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20),
});

const users = await User.findAll();

資料建模

輕鬆定義您的模型,並可選擇使用自動資料庫同步。

const Wishlist = sequelize.define("Wishlist", {
title: DataTypes.STRING,
});
const Wish = sequelize.define("Wish", {
title: DataTypes.STRING,
quantity: DataTypes.NUMBER,
});

// Automatically create all tables
await sequelize.sync();

關聯

定義模型之間的關聯,並讓 Sequelize 處理繁重的工作。

Wish.belongsTo(Wishlist);
Wishlist.hasMany(Wish);

const wishlist = await Wishlist.findOne();
const wishes = await wishlist.getWishes();
const wish = await wishlist.createWish({
title: 'Toys', quantity: 3,
});

await wishlist.removeWish(wish);

軟刪除

將資料標記為已刪除,而不是完全從資料庫中移除。

const User = sequelize.define("User", 
{ username: DataTypes.STRING },
{ paranoid: true },
});

const user = await User.findOne();

await user.destroy();
await User.findAll(); // non-deleted only
await User.findAll({ paranoid: false }); // all

準備好開始使用 Sequelize 了嗎?

交易, 遷移, 強型別, JSON 查詢, 生命週期事件 (hooks),以及更多。
了解更多關於 Sequelize 提供的眾多功能!

開始使用