Sequelize 中文网
Sequelize 是适用于 Oracle、Postgres、MySQL、MariaDB、SQLite 和 SQL Server 等的现代 TypeScript 和 Node.js ORM。 具有可靠的事务支持、关系、预先和延迟加载、读取复制等。
定义模型
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