利用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]
。
完~若有不足,请多指教,万般感谢!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。