Sequelize “WHERE 查询” 坑点总结

前言

Sequelize 是一个 Node.js ORM 框架,它支持 Postgres、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。Sequelize 可以将数据模型转换为 SQL 语句,并执行数据库的 CRUD 操作。WHERE 查询是 Sequelize 中的一个重要功能,它允许我们在数据库中筛选出符合条件的数据。但是,WHERE 查询在使用时也存在一些“坑点”,本文将对这些“坑点”进行总结,并提供一些实用的指导性建议。

查询条件一定要使用严格比较运算符

当我们使用 WHERE 查询时,需要指定一个条件来筛选符合条件的记录。这个条件可以是一个值,也可以是一个表达式。在 SQL 语句中,比较运算符包括等于号(=)、大于号(>)、小于号(<)、大于等于号(>=)、小于等于号(<=)等等。在 Sequelize 中,我们也可以使用这些比较运算符来指定查询条件。但是,有一点需要注意的是,在 Sequelize 中,我们必须使用严格比较运算符(“===" 或 "!==")来代替 SQL 中的“=”或“!=”运算符。

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

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

在 Sequelize 中,我们必须使用 Op.eq、“===" 或 "!==" 运算符来代替“=”或“!=”运算符。这是因为,JavaScript 中的“=”或“!=”运算符是松散比较,会将比较对象转换为同一类型再进行比较,但是,数据库中的数据类型是不同的,需要使用严格比较运算符来保证比较结果的准确性。

字符串查询条件一定要使用 $like 或 $iLike

在 Sequelize 中,要查询含有指定字符串的记录,需要使用 $like$iLike 操作符。

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

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

否则,使用 = 运算符查询字符串时,Sequelize 默认会使用严格比较运算符,而数据库中的字符串字段是大小写不敏感的,这样会导致一些查询结果不准确的问题。

慎用 NULL 值查询

在 Sequelize 中,如果要查询 NULLNOT NULL 值,需要使用 $null$not 操作符。

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

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

但是,查询 NULL 值时需要特别注意,如果使用 = null,则查询条件永远不会成立,应该使用 [Op.eq]: null[Op.is]: null 来查询 NULL 值。

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

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

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

IN 和 NOT IN 的写法

IN 和 NOT IN 查询是比较常见的操作。在 Sequelize 中,我们可以使用$in$notIn 操作符来指定 IN 和 NOT IN 语句。

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

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

BETWEEN 和 NOT BETWEEN 的写法

BETWEEN 和 NOT BETWEEN 查询也是常用的操作。在 Sequelize 中,我们可以使用$between$notBetween 操作符来指定 BETWEEN 和 NOT BETWEEN 语句。

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

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

总结

通过以上的介绍,我们可以了解到 Sequelize 中 WHERE 查询的一些“坑点”。使用 Sequelize 进行 WHERE 查询时,需要注意操作符的选择和使用方式,才能保证查询结果的准确性。在使用 Sequelize 进行开发时,需要多加思考和测试,才能避免由于 WHERE 查询的疏忽而引起的错误。

参考

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