Node.js 中使用 Sequelize 查询 MySQL 数据

Sequelize 是一款 Node.js 中的 ORM(Object-Relational Mapping) 库,它提供了简单、强大、灵活的方式去操作各种不同的数据库。Sequelize 支持 MySQL,PostgreSQL,SQLite 和 MSSQL 等多个关系型数据库,并且可以通过简单的配置就可以对多个数据库进行切换。

在本文中,我们将学习如何在 Node.js 中使用 Sequelize 查询 MySQL 数据库,包括如何进行连接、创建模型、定义关系等。

连接 MySQL 数据库

在使用 Sequelize 查询 MySQL 数据库之前,我们需要先建立数据库连接。Sequelize 提供了非常简单的方式来建立数据库连接,只需要传入相关的参数即可:

----- --------- - ---------------------
 
----- --------- - --- --------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

在这个示例中,我们建立了一个名为 database 的数据库连接,并且同时指定了连接的用户名和密码。其中,host 表示 MySQL 数据库所在的主机名,而 dialect 表示要连接的数据库类型。

在连接成功之后,我们可以通过 sequelize.authenticate() 方法来测试数据库连接是否成功:

-------------------------------- -- -
  ----------------------- --- ---- ----------- ----------------
-------------- -- -
  --------------------- -- ------- -- --- ----------- -----
---

如果连接成功,就可以开始使用 Sequelize 查询数据库了。

创建模型

在使用 Sequelize 查询 MySQL 数据库时,我们需要创建模型来表示数据表。模型包含了数据表的各种属性以及数据之间的关系,因此需要按照实际的数据表结构来创建。

比如我们有一个名为 users 的数据表:

------ ----- ------- -
  ---- ------- --- ---- ---------------
  ------ ------------ ------- -----
  ------- ------------ ------- -----
  ----------- -------- --- -----
  ----------- -------- --- -----
  ------- --- ------
- ------------- ------- --------------- ---------------------------

那么我们可以使用 Sequelize 来创建相应的模型:

----- --------- - ---------------------
----- --------- - --- --------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---
 
----- ---- - ------------------------ -
  ----- -----------------
  ------ ----------------
---

在这个示例中,我们创建了一个名为 user 的模型,并通过 define 方法定义了它的属性。这个模型将会映射到名为 users 的数据表上,并且自动创建一个名为 id 的主键。

我们还可以定义更多的属性,比如 createdAtupdatedAt 属性就表示了数据记录的创建和更新时间。在查询数据时,这些属性会被自动填充。

查询数据

当我们创建了数据表的模型之后,就可以使用 Sequelize 查询数据了。Sequelize 提供了多种方式来查询数据表,比如 findAllfindOnecount 等方法。

查询所有记录

使用 findAll 方法查询所有记录:

------------------------- -- -
  -------------------
---

这个示例会查询所有的用户数据,并将结果打印出来。

如果只想查询一部分数据,可以使用 limitoffset 参数:

-------------- ------ --- ------- - ------------- -- -
  -------------------
---

这个示例会查询前 10 条用户数据,并将结果打印出来。

查询单条记录

使用 findOne 方法查询单条记录:

------------------------ -- -
  ------------------
---

这个示例会查询第一条用户数据,并将结果打印出来。

如果希望根据其他条件来查询单个数据记录,可以通过 where 参数指定:

-------------- ------ - ----- ------ - ------------ -- -
  ------------------
---

这个示例会查询名为 John 的用户数据,并将结果打印出来。

统计记录数

使用 count 方法统计数据记录数:

----------------------- -- -
  -------------------
---

这个示例会统计数据表中的用户数据记录数,并将结果打印出来。

加载关联数据

在 Sequelize 中,我们可以定义不同的数据表之间的关联关系。比如,如果我们有两个数据表 usersposts,每个用户可以有多个帖子,那么可以定义 hasMany 关联关系:

----- ---- - ------------------------ -
  ----- -----------------
  ------ ----------------
---
 
----- ---- - ------------------------ -
  ------ -----------------
  -------- --------------
---
 
-------------------
---------------------

在这个示例中,我们定义了 UserPost 两个模型之间的关联关系。User 模型通过 hasMany 方法关联了多个 Post 模型,而 Post 模型通过 belongsTo 方法关联了一个 User 模型。

当我们查询 User 模型数据时,可以通过 include 参数来一起加载对应的 Post 模型数据:

-------------- ------ - --- - -- -------- ---- ------------ -- -
  ------------------
---

这个示例会查询 id1 的用户数据,并一起加载对应的所有帖子数据。

总结

在本文中,我们学习了如何在 Node.js 中使用 Sequelize 查询 MySQL 数据库,包括建立数据库连接、创建模型、定义关联关系、以及查询数据等方面的内容。通过学习这些知识,我们可以快速地开发出操作 MySQL 数据库的应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6650fcb0d3423812e43f4732