前言
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 中,如果要查询 NULL
或 NOT 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