乐趣区

Sequelize之模糊查询使用like

利用 Sequelize 进行模糊查询的时候,参考别人的代码使用 $like 运算符:

const getArticleList = async (ctx) => {let { title} = ctx.query,
        titleFilter = title ? {title: { $like: `%${title}%` } } : {}
    ...
    await Article.findAndCountAll({
        where: titleFilter,
        include: [...],
        ...
    })
    ...
}

但是我运行时报错:

然后老老实实翻中文文档改成这样之后,就运行正常了。

const Sequelize = require('sequelize');
const Op = Sequelize.Op;
let titleFilter = title ? {title: { [Op.like]: `%${title}` } } : {}

据文档来说,Op.like是正儿八经的操作符,而 $like 其实是运算符别名,因为 Sequelize 允许将特定字符串设置为操作符的别名。就是说,使用 $like 的正确打开方式是:

const Op = Sequelize.Op;
const operatorsAliases = {$like: Op.like}
const sequelize= new Sequelize(db, user, pass, { operatorsAliases})

这样子以后,我们才能使用 $like 代替[Op.like]

完~ 若有不足,请多指教,万般感谢!

退出移动版