简介
Sequelize 是一个基于 Node.js 的 ORM 框架,可以在 Node.js 中操作各种不同类型的数据库。ORM(Object-Relational Mapping)是一种编程技术,它可以将面向对象语言中的对象转换为关系型数据库中的表。
在本篇文章中,我们将详细介绍如何使用 Sequelize 在 Node.js 中进行 ORM 操作。我们将从安装 Sequelize 开始,一步一步讲解它的用法,并给出代码示例以帮助读者更好地理解。
安装
首先需要在 Node.js 中安装 Sequelize。在命令行中执行以下命令:
npm install --save sequelize
连接数据库
在使用 Sequelize 前,需要先连接数据库。在使用 Sequelize 时,我们需要传递一些数据库连接信息,如数据库名称、用户名、密码等。在本例中,我们将使用 MySQL 数据库。
在项目中创建一个 config.json 文件,用于存储数据库连接信息:
-- -------------------- ---- ------- - -------------- - ----------- ------- ----------- --- ----------- --------------- ------- ------------ ---------- ------- -- ------- - ----------- ------- ----------- --- ----------- ---------------- ------- ------------ ---------- ------- -- ------------- - ----------- ------- ----------- --- ----------- ---------------- ------- ------------ ---------- ------- - -
接下来再创建两个文件:
- db.js:用于创建 Sequelize 实例并连接数据库。
- sequelize.js:用于获取 Sequelize 实例。
db.js
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --- - -------------------- -- -------------- ----- ------ - ----------------- - ------------------------------- ----- --------- - --- -------------------------- ---------------- ---------------- -------- -- -------- --------- --------------- -------- -- - ----------------------- --- ---- ----------- ---------------- -- ---------- -- - --------------------- -- ------- -- --- ----------- ----- --- -------------- - ----------
sequelize.js
const Sequelize = require('sequelize'); const sequelize = require('./db'); module.exports = sequelize;
上述代码中,我们使用了环境变量获取当前运行环境(开发环境、测试环境或生产环境),在 config.json 中获取相应的数据库连接配置,并创建 Sequelize 实例和连接数据库。我们还测试了连接是否成功,并输出了连接成功或失败的信息。
创建表格
在 Sequelize 中,我们使用模型(Model)来管理数据表。所谓模型就是指一张数据表对应的 JavaScript 类。通过 Sequelize,我们可以将查询语句转换为可用的 JavaScript 方法,使用方便。
在这里我们需要创建一个 Book 模型,用于对数据库的 book 表进行操作。首先需要在 models 目录下创建一个 book.js 文件,写入下面的代码:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - ------------------------------- ----- ---- - ------------------------ - --- - ----- ------------------ ---------- ------ ----------- ----- -------------- ---- -- ------ - ----- ----------------- ---------- ----- -- ------- - ----- ----------------- ---------- ----- -- ----- - ----- ----------------- ---------- ----- -- ------------ - ----- --------------- ---------- ----- - --- -------------- - -----
上述代码中,我们首先引入了 Sequelize 和我们刚刚创建的 sequelize.js 文件。此外,我们使用 define 方法创建了一个名为 Book 的模型,并定义了 book 表格的属性。其中,id 实为主键,且这个值是自增的;title、author、isbn、publishedAt 是各自对应的字段,都不能为空。
增删改查(CRUD)
有了模型后,我们就可以进行增删改查操作了。下面我们将分别介绍增删改查操作的代码示例。
创建记录
-- -------------------- ---- ------- ----- ---- - ------------------------- ------------- ------ -------- ---- ------- ----- ----- ---------------- ------------ ------------ ------------ -- - ------------------ - --- --------- --------------- ------------ -- - ------------------ ------ - --- ------ ----- ---
上述代码中,我们通过 create 方法创建了一条新纪录,并将属性和属性值传入其中。需要特别注意的是,我们使用了 then 和 catch 方法处理异步请求的结果,其中 then 用于处理成功请求的结果,catch 用于处理失败请求的结果。
查询记录
-- -------------------- ---- ------- ----- ---- - ------------------------- -------------- ------ - ------- ---- - -------------- -- - -------------------------- -------- -------- ------- ---- -- ------- - --------------------------- - ------------ -- - ------------------ ------- ------- ----- ---
上述代码中,我们使用 findAll 方法查询 author 为 “张三” 的图书记录。findAll 方法返回一个数组,包含所有满足条件的记录。在返回的结果中,我们使用了 for...of 语法,而非 forEach 方法,主要是为了更符合 ES6 的语法规范,并方便理解。
更新记录
-- -------------------- ---- ------- ----- ---- - ------------------------- ------------ - ------ ----------- --- -- - ------ - ------- ---- - - ------------------- -- - ---------------------------- ---------- --- ---------- ------------ -- - ------------------ ---------- ----- ---
上述代码中,我们使用 update 方法更新所有 author 为 “张三”的图书记录的 title 字段为 “JavaScript 实战”。update 方法返回更新的记录数,我们使用 updatedCount[0] 输出更新的记录数。
删除记录
-- -------------------- ---- ------- ----- ---- - ------------------------- -------------- ------ - ------- ---- - -------------------- -- - ------------------------- ---------- --- ---------- ------------ -- - ------------------ ---------- ----- ---
上述代码中,我们使用 destroy 方法删除所有 author 为 “张三”的图书记录。destroy 方法返回被删除的记录数。
总结
本文从安装 Sequelize 开始,一步一步讲解了使用 Sequelize 在 Node.js 中进行 ORM 操作,并给出了相应的示例代码。希望本文能为初学者提供一些帮助,让大家更加深入理解 Sequelize。如有疑问或不足之处,欢迎留言指出。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65332cb17d4982a6eb69e231