Sequelize - How to search multiple columns?
17,216
Solution 1
Sequelize >= 4.12
const Op = Sequelize.Op;
Article.findAll({
where: {
title: { [Op.like]: '%' + searchQuery + '%' },
description: { [Op.like]: '%' + searchQuery2 + '%' }
}
});
Sequelize < 4.12
Article.findAll({
where: {
title: { like: '%' + searchQuery + '%' },
description: { like: '%' + searchQuery2 + '%' }
}
});
The above will make sure title
includes searchQuery
and description
includes searchQuery2
. If you however would like to get results back when an Article includes one of the two, the following query should work:
Sequelize >= 4.12
const Op = Sequelize.Op;
Article.findAll({
where: {
[Op.or]: [
title: { [Op.like]: '%' + searchQuery + '%' },
description: { [Op.like]: '%' + searchQuery2 + '%' }
]
}
});
Sequelize < 4.12
Article.findAll({
where: {
$or: [
title: { like: '%' + searchQuery + '%' },
description: { like: '%' + searchQuery2 + '%' }
]
}
});
Solution 2
Sequelize >= 4.12
Article.findAll({
where = {
[Op.or]: [
{ name: { [Op.like]: `%${req.query.query_string}%` } },
{ description: { [Op.like]: `%${req.query.query_string}%` } }
]
}
});
just fyi: mysql doesn't supports iLike ;)
Author by
waffl
Updated on July 27, 2022Comments
-
waffl almost 2 years
I have a database of articles with several columns and would like to be able to search both
title
anddescription
.Currently, I have:
Article.findAll({ where: { title: { like: '%' + searchQuery + '%' } } });
How can I also search the description as well?
I've read through the sequelize documentation, even in the
Complex filtering / OR / NOT queries
section, but the examples only seem to explain searching in one column.