Sequelize.js 有没有办法在sequelize findall查询中组合LIKE和IN运算符?
我正在尝试创建一个查询,可以从搜索中获取多个单词“部分”或“完整”。这些词包含在字符串数组中,然后用于搜索表的多个列 我尝试过将Op.like和Op.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]:
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
}
});