本文将全面介绍 Sequelize,一个 Node.js ORM 框架,帮助开发者更高效地与 SQL 数据库交互。本文从基础概念到高级用法,逐一展开各项功能,帮助读者全面了解 Sequelize 并掌握相关技能。
基础概念
Sequelize 是一个基于 Promise 的 ORM 框架,支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库。Sequelize 的目的是帮助开发者更加轻松地操作数据库,并提供灵活性和可扩展性。
安装
安装 Sequelize 的方法非常简单,只需要在控制台输入以下命令即可:
npm install sequelize --save
初始化
在使用 Sequelize 前,需要通过 Sequelize 构造函数初始化一个实例,并传入相应的配置选项。
const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', });
其中,四个参数分别为数据库名称、用户名、密码和选项。除此之外,Sequelize 还支持更多的配置选项,如连接池大小、日志记录、时区等等。更多详细说明请参考 官方文档。
数据类型
Sequelize 支持多种数据类型,包括字符串、整型、浮点型、日期、布尔型、JSON、ENUM、ARRAY 等等。
-- -------------------- ---- ------- ----- ---- - ------------------------ - -- ----- ---------- - ----- ----------------- ---------- ------ -- -- -- ---- - ----- ------------------ -- -- ---- ---------- - ----- --------------- -- -- ---- ------- - ----- ---------------------- ---------- -- -- ---- ---------- - ----- -------------------------------- -- ---
基本操作
Sequelize 支持多种数据库操作,如增删改查、事务、关联查询等等。下面我们逐一介绍这些操作。
新增数据
为向数据库中新增一条数据,我们需要使用 create
方法,并传入要新增的数据。
-- -------------------- ---- ------- ----- ---------- - -- -- - ------------- ---------- ------ ---- --- ---------- --- ------------------- ------- ------- ---------- ----------- ------------ --- --
查询数据
查询数据是一项常用操作,Sequelize 也提供了相应的方法。
-- -------------------- ---- ------- -- ------ ----- ------------ - ----- -- -- - ----- ----- - ----- --------------- ------------------- -- -- -- -- ---- ----- ------------ - ----- ---- -- - ----- ---- - ----- ------------------ ------------------ -- -- ------ -- --- ----- -------------- - ----- -- -- - ----- ----- - ----- -------------- ------ - ---- - -------- --- -- -- --- ------------------- --
其中,findAll
方法用于查询所有数据,findByPk
方法则是根据主键 ID 进行查询,where
是一个查询条件对象,具体用法请参考官方文档。
更新数据
更新数据同样是一项常用操作。
const updateUser = async (id) => { const user = await User.findByPk(id); if (user) { user.firstName = 'Jerry'; user.age = 20; await user.save(); } };
删除数据
删除数据也非常简单,只需要调用 destroy
方法并传入相应的查询条件即可。
const deleteUser = async (id) => { await User.destroy({ where: { id: id, }, }); };
事务操作
Sequelize 支持事务操作,可以帮助我们更好地控制数据库操作的原子性。
-- -------------------- ---- ------- ----- --------------- - ----- -- -- - ----- - - ----- ------------------------ --- - ----- ------------ - ---------- -------- ---- --- -- - ------------ -- - -- ----- ------------ - ---------- ------ ---- --- -- - ------------ -- - -- ----- ----------- - ----- ------- - ----- ------------- - --
其中,sequelize.transaction()
方法返回一个 Promise,表示当前建立的事务。在事务中,所有的数据库操作必须携带 {transaction: t}
参数,表示这些操作都属于同一个事务。在事务操作结束后,需要根据结果调用 commit()
或 rollback()
方法来确认事务。
关联查询
Sequelize 支持多表关联查询,实现数据之间的联结。
-- -------------------- ---- ------- ----- ------- - --------------------------- - ------ ----------------- --- -- ------ ---------------------- ------------------------ -- ---- ----- ------------ - ----- -- -- - ----- ----- - ----- -------------- -------- - - ------ -------- -- -- --- ------------------- --
其中,hasMany
和 belongsTo
分别表示多个用户拥有多个项目、一个项目属于一个用户。include
选项则表示需要将项目与用户进行关联查询。
总结
本文通过介绍 Sequelize 的基础概念和常用操作,给读者提供了全面的学习指导。掌握了 Sequelize 这一 ORM 框架后,可以让我们更快地完成数据库操作,提高开发效率。同时,凭借着 Sequelize 强大的功能和灵活性,我们可以更好地适应各种应用场景,实现一个更加出色的项目。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645f6dfc968c7c53b0173c98