什么是 ORM?
ORM(Object Relational Mapping,对象关系映射)是一种将对象和关系数据库之间的映射进行转换的技术。简单来说,它可以把关系型数据库的数据转换成对象,然后以面向对象的方式进行操作和处理。
ORM 工具可以让开发者可以用面向对象的方式操作数据库。通常它包括操作数据库的几个部分:操作数据、存储数据和查询数据。
Sequelize 简介
Sequelize 是一个基于 Promise 实现的 Node.js ORM,支持 PostgreSQL、MySQL、SQLite 和 MSSQL。它提供了大量的异步 API,使得针对以上这些关系型数据库的操作变得更加简单和可靠。
Sequelize 支持多种数据类型,并提供了多列索引、复合键、虚拟列等常用的数据库特性。它提供了丰富的查询查询语言(Query Language,简称为 DSL),适合零散、复杂的数据应用,也能应对企业级应用。该库的文档也十分详细,使用者可以在文档中找到如何使用这个库进行开发和维护。
如何使用 Sequelize
安装和初始化
要使用 Sequelize,首先需要在本地安装它。在控制台中输入以下命令:
npm install sequelize
安装完成后,可以使用以下方法初始化 Sequelize。
const Sequelize = require('sequelize'); const sequelize = new Sequelize('mydb', 'myuser', 'mypass', { dialect: 'mysql' });
sequelize 构造函数的第一个参数是要连接的数据库的名称,第二个参数是用户名,第三个参数是密码,第四个参数是有关数据库特性的选项 (例如 dialect )。在上述代码的第四个参数中选择了 MySQL。Sequelize 支持的选项包括:
dialect
: 选择数据库类型 (除了 PostgreSQL,还有 MySQL、SQLite、MSSQL、MariaDB 和 Oracle)。pool
:定义连接池 (连接池大小、最大连接数等) 。host
:设置数据库的主机名,如果是本地的话可以使用 localhost。port
:设置数据库的端口号。logging
:是否打印日志。如果您想详细了解查询日志,可以将其设置为 console.log。define
:一些全局模型默认选项,可以使用此选项设置。
创建模型
在 Sequelize 中,通过使用 Sequelize.Model 定义模型。每个模型都必须有字符串名称,在消息表格示例中是 Message。我们也需要确定表名,这里是 messages。
const Message = sequelize.define('Message', { title: Sequelize.STRING, body: Sequelize.TEXT });
Sequelize 会为我们自动生成主键 (名为 id 的整数)。在上述代码中,我们定义了 Message 模型和其对应的数据表。
数据的操作
对于大部分的数据操作,在 Sequelize 中都有相应的API进行操作。(例如数据查询、增、删、改)。在本篇文章中,为了说明问题,我们只舍取部分方法来做演示。包括 create
、findAll
、findOne
、update
、destroy
等。
创建记录:
-- -------------------- ---- ------- --------------- - ------ -------- ----- ----- ------ -- - ------- --------- -------- - --------------- -- ---------------------------
读取一条记录:
Message.findOne({ where: { title: 'check title', }, }).then((result) => { console.log(result.get()); });
查询多条记录:
Message.findAll().then((result) => { const messages = result.map((r) => r.get()); console.log(messages); });
更新一条记录:
-- -------------------- ---- ------- --------------- - ----- ------- ------ -- - ------ - ------ ------- ------- -- - --
删除记录:
Message.destroy({ where: { title: 'delete title', }, });
操作事务
Sequelize 设计了完整的事务 API,支持单个和区块事务等的各种事务类型。
在 Sequelize 中,可以使用 sequelize.transaction() 方法进行事务的操作,其语法如下:
-- -------------------- ---- ------- --------- ---------------- -- -- ----------- -------- ------------- -- ------ ------- - --------- ---------- -- - ------ ------------- -- ------ ------- - --------- --- -- -
在事务处理中,可以执行多次操作,当执行过程中出现异常时,事务回滚并撤销先前完成的所有操作。下面是一个使用事务的例子。
-- -------------------- ---- ------- ------------------------------ --- - -- --------- ------ ------------ - ---------- ---------- --------- --------- -- - ------------ - - - -------------- ------ - -- -------------- --------------- ------ ----------------- ------ ----- -- - ------------ - --- -- -------------- -- - -- ---------------------- ----------- -- --------------- ----- - -- ------------------------------------- ----------------- ------------- --- ---
总结
本篇文章中概述了 Sequelize 的基本知识。我们详细讲述了如何定义模型,并描述了如何使用 API 进行操作。
需要注意的是,Sequelize 并不仅仅支持本文中仅仅介绍的 CRUD 操作。它还提供了其他许多高级功能,例如ORM和事务处理,如果你需要更多的帮助,建议查看文档。
通过本篇文章我们可以看出,Sequelize 是一个非常强大和便于使用的 ORM 库。它支持众多数据库类型,并且提供了许多高级功能。
在进行项目开发时,使用 Sequelize 库可以显著减少工作量,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6481cd9b48841e9894147760