目录
1. 简介
Sequelize 是一个基于 promise 的 Node.js ORM(对象关系映射器),支持多种数据库,包括 Postgres、MySQL、MariaDB、SQLite 以及 Microsoft SQL Server。它提供了强大的事务支持、关联关系、预读和延迟加载、读取复制等功能。
2. 安装
Sequelize 的使用可以通过 npm (或 yarn).
npm install --save sequelize
你还必须手动为所选数据库安装驱动程序:
3. 连接到数据库
要连接到数据库,需要创建一个 Sequelize 实例。这可以通过传递连接参数到 Sequelize 构造函数,或通过传递一个连接 URI 来完成:
const { Sequelize } = require('sequelize');
// 方法 1: 传递一个连接 URI
const sequelize = new Sequelize('sqlite::memory:'); // Sqlite 示例
const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname'); // Postgres 示例
// 方法 2: 分别传递参数
const { Sequelize } = require("sequelize");
const {
MYSQL_HOST,
MYSQL_PORT,
MYSQL_USER,
MYSQL_PWD,
MYSQL_DB,
} = require("../config/config.default");
// 创建数据库实例(数据库名, 用户名, 密码, 配置)
const seq = new Sequelize(MYSQL_DB, MYSQL_USER, MYSQL_PWD, {
host: MYSQL_HOST, // 数据库地址
dialect: "mysql", // 数据库类型
});
Sequelize 构造函数接受许多参数,具体可以查看 API 参考。
4. 测试连接
使用 .authenticate()
方法测试连接是否成功:
// 测试数据库连接;
seq
.authenticate()
.then(() => {
console.log(MYSQL_DB, MYSQL_USER, MYSQL_PWD, MYSQL_HOST, "数据库连接成功");
})
.catch((err) => {
console.log("数据库连接失败", err);
});
5. 关闭连接
默认情况下,Sequelize 会保持连接打开状态。如果需要关闭连接,可以调用 sequelize.close()
方法。注意,一旦调用 sequelize.close()
,就无法再打开新的连接,需要创建一个新的 Sequelize 实例来重新访问数据库。
6. 模型(Model)
模型是 Sequelize 中的一个核心概念,它定义了数据库中的表结构。以下是如何定义一个模型的示例:
define.sync({ force: true });
在 Sequelize 中,.define
方法用于定义模型,而 .sync
方法用于将模型同步到数据库。.sync({ force: true })
是 .sync
方法的一个选项,它的作用是强制同步模型到数据库。这意味着如果数据库中已经存在同名的表,Sequelize 将会删除该表,并根据模型的定义重新创建。这会导致表中所有数据的丢失,因此这个操作是非常危险的,通常只在开发环境中使用,或者在完全了解可能的后果时使用。
belongsTo
belongsTo
是 Sequelize 中定义模型关联关系的一个方法,用于表示一个模型属于另一个模型。例如,如果一个博客文章(Post)属于一个用户(User),则可以使用 belongsTo
在 Post 模型中定义这种关系。这样,每个 Post 实例都会与一个 User 实例相关联,并且可以通过这个关系访问 User 的信息。
在 Sequelize 中,使用 belongsTo
时,会自动在关联的模型中创建一个外键,这个外键指向被关联模型的主键。例如,如果 Post 模型 belongsTo
User 模型,Sequelize 会在 Post 表中创建一个 userId
字段,这个字段是 User 表的主键的外键。
async getCartList(pageNum, pageSize) {
// 分页
const { count, rows } = await Cart.findAndCountAll({
attrib