I have a database of articles with several columns and would like to be able to search both title
and description
.
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.
Advertisement
Answer
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 + '%' } ] } });