使用Sequelize.where方法时如何正确配置Op.iLike/like运算符?
Sequelize.where 模糊查询正确实现方案
现有写法的错误是将运算符Op.iLike作为字符串参数传入,导致Sequelize无法识别为操作符,只会当成普通字符串匹配,按以下步骤修改即可:
- 首先从sequelize中引入操作符对象
Op:
const { Op } = require('sequelize'); // 若使用ES module,写法如下 // import { Op } from 'sequelize';
- 调整
Sequelize.where的参数,将运算符直接作为第二个参数传入,不要包裹任何引号:
Sequelize.where( Sequelize.col('projectRoles.name'), Op.iLike, `%${ctx.request.query.filterString}%` )
- 如需使用大小写敏感的
like运算符,替换上述代码中的Op.iLike为Op.like即可。
上述写法会自动对用户传入的搜索参数做参数化处理,可避免SQL注入风险,无需手动对输入内容做特殊转义。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

