Sequelize 是一个基于 Node.js 的 ORM 框架,使得开发者可以透过 JavaScript 连接到关系型数据库。其中最核心的部分就是 Model,它是对数据库表结构的抽象和封装,是 ORM 模式中的基本概念之一。在使用 Model 进行数据库操作时,我们经常会使用到 where 条件进行筛选,本文就具体介绍 Sequelize 的 where 条件用法。
前置知识
在阅读本文前需要对 Sequelize 的 Model 和 Query 记录功能有一定了解。
where 条件的基本用法
where 条件是用来指定查询的过滤条件,表示查询表中满足 where 后条件的行。在 Sequelize 中,我们可以使用字符串、对象,甚至是函数进行 where 条件的构建。
字符串
在 where 中,我们可以使用字符串表示查询的过滤条件,基本语法如下:
Model.findAll({ where: 'attributeName = "value"' });
上述 where 条件表示查询 attributeName 属性的值为 value 的记录。语法中,我们可以使用等于号、大于小于号、逻辑运算符等对字符串进行拼接构建复杂的条件语句。
对象
还可以使用对象的形式进行 where 条件的构建,并且可以使用 Sequelize 提供的运算符、别名等功能。基本语法如下:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- -- - ------------- --------------- ------ - -------------- - -------- ------- - - ---
上述 where 条件表示查询 attributeName 属性的值等于 value 的记录。语法中,我们首先定义了 Sequelize 变量并将其赋值为 Sequelize 对象,再使用下标运算符选到其中的运算符 eq 进行使用。同样可以使用大于、小于等等运算符。对象中我们还可以嵌套属性,实现更复杂的条件构建。
函数
在 where 条件中,还可以通过函数的方式进行构建,这种方式使用更加灵活。基本语法如下:
Model.findAll({ where: (sequelize, Sequelize.Op) => Sequelize.where( Sequelize.fn('lower', Sequelize.col('attributeName')), 'value' ) });
上述 where 条件表示查询 attributeName 属性的值转换为小写后等于 value 的记录。语法中,我们在 where 中传入一个函数,函数参数中有 Sequelize 所需的 sequelize 和 Op 对象。其中使用了 Sequelize.fn 和 Sequelize.col 方法包装查询语句。
进阶用法
模糊查询
在 where 中,常常需要使用到模糊查询,在 Sequelize 中,可以使用 % 和 _ 通配符实现。% 代表任意数量字符,_ 代表单个字符。基本语法如下:
Model.findAll({ where: { attributeName: { [Op.like]: '%value%' } } });
上述 where 条件表示查询 attributeName 属性的值包含 value 的记录。
范围查询
Sequelize 还提供了范围查询的功能,使用 [Op.between] 和 [Op.notBetween] 来指定一个区间。基本语法如下:
Model.findAll({ where: { attributeName: { [Op.between]: [start, end] } } });
上述 where 条件表示查询 attributeName 属性的值在 start 和 end 之间的记录。
总结
本文介绍了 Sequelize Model 中 where 条件的基础用法,包括字符串、对象和函数三种方式,以及模糊查询和范围查询的使用。通过本文的阅读,读者可以深入了解 Sequelize 的 Model 以及查询条件的使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6485a8d448841e9894469156