Sequelize 使用 include 查询关联表的方法

阅读时长 4 分钟读完

前言

Sequelize 是一款 Node.js 的 ORM 框架,提供了强大的对数据库的操作能力,同时支持多种数据库(MySQL、Postgres、SQLite、MSSQL)。

在使用 Sequelize 进行数据库操作时,经常需要查询关联的数据表。本文将详细介绍如何使用 Sequelize 的 include 方法查询关联表的数据。

include 方法的基本使用

Sequelize 的 include 方法可以帮助我们一次性查询多张表的数据,可以解决 N+1 查询的问题,提高查询效率。

include 方法接收一个数组作为参数,数组中的每个元素代表一张关联表,可以嵌套使用。

以查询文章和文章作者为例:

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

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

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

-- -------------
-----------------
  -------- ------
-------------- -- -
  -------------------
--
展开代码

上述代码中,Article.belongsTo(Author) 表示 Article 表与 Author 表为一对多关系。

include 方法接收 Author 表对应的模型作为参数,将 Author 表查询结果嵌入 Article 表查询结果中。

include 方法联合查询

include 方法还可以支持联合查询,即在关联表的基础上再次关联其他表。

以查询文章、文章作者和作者所属的组织为例:

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

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

-- ---------------------
-----------------
  -------- -
    -
      ------ -------
      -------- ------------
    -
  -
-------------- -- -
  -------------------
--
展开代码

上述代码中,Author.belongsTo(Organization) 表示 Author 表与 Organization 表为一对多关系。

在 include 方法中,使用对象形式指定查询 Author 表关联的 Organization 表。

include 方法的属性过滤

include 方法还支持对查询结果的属性进行过滤,即只查询特定的属性。

以查询文章和文章作者的姓名为例:

-- -------------------- ---- -------
-- -------------------
-----------------
  -------- -
    -
      ------ -------
      ----------- --------
    -
  -
-------------- -- -
  -------------------
--
展开代码

上述代码中,使用 attributes 指定查询 Author 表的 name 属性。

include 方法的条件筛选

include 方法还支持对查询结果进行条件筛选,即只查询满足条件的结果。

以查询文章和文章作者不为阿拉伯半岛的作者为例:

-- -------------------- ---- -------
-- --------------------
-----------------
  -------- -
    -
      ------ -------
      ------ -
        --------- -
          ----------- ---------
        -
      -
    -
  -
-------------- -- -
  -------------------
--
展开代码

上述代码中,使用 where 指定查询 Author 表的 location 不为阿拉伯半岛的结果。

总结

Sequelize 的 include 方法可以帮助我们便捷地查询关联表的数据,避免了 N+1 查询的问题,提高了查询效率。

在使用 include 方法时,可以使用联合查询、属性过滤以及条件筛选,使得查询结果更加准确和灵活。

通过本文的介绍和示例,相信读者已经掌握了 Sequelize 的 include 方法的使用方法,可以更加方便地进行数据库查询操作。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6471c84b968c7c53b0fa504b

纠错
反馈

纠错反馈