Sequelize之模糊查詢使用like

利用Sequelize進行模糊查詢的時候,參考別人的代碼使用$like運算符:html

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

可是我運行時報錯:
圖片描述git

而後老老實實翻中文文檔改爲這樣以後,就運行正常了。github

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

據文檔來講,Op.like是正兒八經的操做符,而$like實際上是運算符別名,由於Sequelize 容許將特定字符串設置爲操做符的別名。就是說,使用$like的正確打開方式是:async

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

這樣子之後,咱們才能使用$like代替[Op.like]ui

完~如有不足,請多指教,萬般感謝!spa

相關文章
相關標籤/搜索