Sequelize 是一个 Node.js 的 ORM 框架,被广泛用于开发 Web 应用程序和 API 服务中的数据库交互部分,支持多种数据库类型,如 PostgreSQL、MySQL、SQLite 和 Microsoft SQL Server 等。在本篇文章中,我们将会介绍如何使用 Sequelize 进行数据库操作,包括创建模型、数据库迁移、增删改查等。
安装
在开始使用 Sequelize 前,需要先安装 Sequelize 及相关依赖。
npm install --save sequelize sequelize-cli pg pg-hstore
其中,pg
是 PostgreSQL 的 Node.js 驱动程序,pg-hstore
则用于在 PostgreSQL 中存储 JSON 数据。
创建模型
在 Sequelize 中,每个表都有自己的模型,存放在 models
目录下。使用 Sequelize CLI 快速生成模板文件。
sequelize model:create --name User --attributes name:string,email:string,password:string
上面的命令将生成一个名为 User
的模型文件及其对应的迁移文件,模型文件根据 MySQL 的约定,表名为复数形式(即 users
),如果不需要在默认的表名下创建模型,可以使用 --tableName
选项进行指定。
数据库迁移
Sequelize 支持数据库迁移,即通过代码控制数据库结构的变更,而无需直接操作数据库。使用 Sequelize CLI 可以轻松创建和运行数据库迁移。
创建迁移
sequelize migration:create --name create_users_table
创建后将在 migrations
目录下生成一个迁移文件,文件名包含时间戳和迁移任务名称。迁移文件包含两个方法:up
和 down
。up
方法定义了数据库结构的变化,而 down
方法定义了变化的回滚操作,在升级失败时可以回滚到先前的版本。
-- -------------------- ---- ------- ---- -------- -------------- - - --- ----- ---------------- ---------- -- - ----- ----------------------------------- - --- - ---------- ------ -------------- ----- ----------- ----- ----- ----------------- -- ----- - ----- ---------------- -- ------ - ----- ---------------- -- --------- - ----- ---------------- -- ---------- - ---------- ------ ----- -------------- -- ---------- - ---------- ------ ----- -------------- - --- -- ----- ----- ---------------- ---------- -- - ----- ---------------------------------- - --展开代码
执行迁移
执行 up
方法升级数据库。
sequelize db:migrate
可以使用 --env
选项指定环境(如 --env=production
),以及 --to
选项指定要升级的版本号。
回滚迁移
执行 down
方法回滚数据库到之前的版本。
sequelize db:migrate:undo
和升级操作一样,可以使用 --env
和 --to
参数控制回滚的环境和版本号。
增删改查
Sequelize 支持多种数据查询方式,包括 findAll
、findOne
、count
、max
、min
、create
、update
和 destroy
等。以下是一些常用的方法。
查询数据
-- -------------------- ---- ------- ----- ----- - ----- -------------- ------ - ------- ---- - --- ----- ---- - ----- -------------- ------ - --- - - --- ----- ----- - ----- ------------ ------ - ------- ----- - ---展开代码
Sequelize 还支持一些查询构建器,如 Op
、fn
和 col
等,可以用来构建复杂的查询条件和查询结果。
创建数据
const user = await User.create({ name: 'Lucas', email: 'lucas@example.com', password: '123456' });
更新数据
const user = await User.findByPk(1); user.name = 'Lucas Tai'; user.email = 'lucas.tai@example.com'; await user.save();
或者使用 update
方法进行批量更新。
await User.update({ status: false }, { where: { status: true } });
删除数据
const user = await User.findByPk(1); await user.destroy();
或者使用 destroy
方法进行批量删除。
await User.destroy({ where: { status: false } });
结语
以上是 Sequeliz ORM 操作的简单指南,其中涉及到的细节和用法并不完全,你可以查阅官方文档进行更深入的学习和了解。Sequelize 提供的方法和功能非常多,在实际开发中需要根据具体的业务需求进行选择和使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bb80e0306f20b3a6b17f1d