Sequelize.js 有没有办法在sequelize findall查询中组合LIKE和IN运算符?

Sequelize.js 有没有办法在sequelize findall查询中组合LIKE和IN运算符?,sequelize.js,Sequelize.js,我正在尝试创建一个查询,可以从搜索中获取多个单词“部分”或“完整”。这些词包含在字符串数组中,然后用于搜索表的多个列 我尝试过将Op.like和Op.in操作符组合在一起,但似乎找不到一种方法让它们一起工作 const searchQuery = ['joh', 'do',] const patients = await Patient.findAll({ where: { [Op.or]: [ { firstName: { [Op.like]:

我正在尝试创建一个查询,可以从搜索中获取多个单词“部分”或“完整”。这些词包含在字符串数组中,然后用于搜索表的多个列

我尝试过将Op.like和Op.in操作符组合在一起,但似乎找不到一种方法让它们一起工作

const searchQuery = ['joh', 'do',]

const patients = await Patient.findAll({
    where: {
        [Op.or]: [
            { firstName: { [Op.like]: '%' + searchQuery + '%' }},
            { lastName: { [Op.like]: '%' + searchQuery + '%' }},
        ]
    }
});

上面的代码在一个单词上运行良好,但不是像我需要的多个单词。

我不知道有任何这样的SQL函数。我建议使用js动态构建大部分WHERE子句,如下所示

希望单词列表很小-生成的查询可能很大

const searchQuery = ['joh', 'do',]

let orArray = [];
searchQuery.forEach(word => {
   orArray.push(
      {
         [Op.or] : [
            {firstName: { [Op.like]: '%' + word + '%' }},
            {lastName:  { [Op.like]: '%' + word + '%' }},
         ] 
      }
    );
});

const patients = await Patient.findAll({
    where: {
        [Op.or]: orArray
    }
});