Sequelize 的查询接口使用与参数

阅读时长 9 分钟读完

Sequelize 是一个基于 Node.js 的 ORM(对象关系映射)框架,它提供了丰富的查询接口来操作数据库。本文将详细介绍 Sequelize 的查询接口使用与参数,帮助读者更好地理解和使用 Sequelize。

查询接口

Sequelize 提供了以下几种查询接口:

  • findAll
  • findOne
  • findOrCreate
  • findAndCountAll
  • max
  • min
  • sum
  • count

下面将逐一介绍每个接口的使用方法和参数。

findAll

findAll 方法用于查询表中所有符合条件的记录。它的基本语法如下:

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

其中,Model 是 Sequelize 模型,where 是查询条件,order 是排序方式,limit 是查询结果数量限制。下面是一个示例代码:

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

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

以上代码查询了 age 大于 18 的前 10 条用户记录,并按照 age 降序排列。

findOne

findOne 方法用于查询符合条件的第一条记录。它的基本语法如下:

其中,Model 是 Sequelize 模型,where 是查询条件,order 是排序方式。下面是一个示例代码:

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

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

以上代码查询了名字为“张三”的用户记录中年龄最大的一条记录。

findOrCreate

findOrCreate 方法用于查询符合条件的记录,如果不存在则创建新记录。它的基本语法如下:

其中,Model 是 Sequelize 模型,where 是查询条件,defaults 是默认值。下面是一个示例代码:

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

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

以上代码查询了名字为“张三”的用户记录,如果不存在则创建一个年龄为 20 的新记录。

findAndCountAll

findAndCountAll 方法用于查询符合条件的记录数量和记录列表。它的基本语法如下:

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

其中,Model 是 Sequelize 模型,where 是查询条件,order 是排序方式,limit 是查询结果数量限制。下面是一个示例代码:

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

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

以上代码查询了 age 大于 18 的用户记录数量和前 10 条记录,并按照 age 降序排列。

max、min、sum 和 count

max、min、sum 和 count 方法分别用于查询符合条件的记录中某个字段的最大值、最小值、总和和数量。它们的基本语法如下:

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

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

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

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

其中,Model 是 Sequelize 模型,field 是字段名,where 是查询条件。下面是一个示例代码:

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

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

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

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

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

以上代码分别查询了名字为“张三”的用户记录中年龄的最大值、最小值、总和和 age 大于 18 的用户记录数量。

参数

Sequelize 的查询接口中还有许多参数可以使用,这里只介绍一些常用的参数。

where

where 参数用于指定查询条件,它是一个对象,对象的属性名是字段名,属性值是查询条件。下面是一些常用的查询条件:

  • [Op.eq]:等于
  • [Op.ne]:不等于
  • [Op.gt]:大于
  • [Op.gte]:大于等于
  • [Op.lt]:小于
  • [Op.lte]:小于等于
  • [Op.between]:在某个区间内
  • [Op.notBetween]:不在某个区间内
  • [Op.in]:在某个集合内
  • [Op.notIn]:不在某个集合内
  • [Op.like]:模糊匹配
  • [Op.notLike]:不模糊匹配
  • [Op.startsWith]:以某个字符串开头
  • [Op.endsWith]:以某个字符串结尾
  • [Op.substring]:包含某个字符串

下面是一个示例代码:

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

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

以上代码查询了名字为“张三”且年龄大于 18,或者名字中包含“王”或“李”的用户记录。

order

order 参数用于指定排序方式,它是一个数组,数组的每个元素是一个数组,第一个元素是字段名,第二个元素是排序方式('ASC' 或 'DESC')。下面是一个示例代码:

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

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

以上代码查询了所有用户记录,并按照年龄降序排列,年龄相同的用户按照名字升序排列。

limit 和 offset

limit 和 offset 参数用于限制查询结果数量和偏移量,它们分别是一个整数。下面是一个示例代码:

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

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

以上代码查询了从第 21 条用户记录开始的前 10 条记录。

总结

本文介绍了 Sequelize 的查询接口使用与参数,包括 findAll、findOne、findOrCreate、findAndCountAll、max、min、sum 和 count 方法,以及常用的参数。希望读者通过本文的学习和实践,更好地理解和使用 Sequelize,提高前端开发效率。

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

纠错
反馈