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.
const Op = Sequelize.Op;
Article.findAll({
where: {
title: { [Op.like]: '%' + searchQuery + '%' },
description: { [Op.like]: '%' + searchQuery2 + '%' }
}
});
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:
const Op = Sequelize.Op;
Article.findAll({
where: {
[Op.or]: [
title: { [Op.like]: '%' + searchQuery + '%' },
description: { [Op.like]: '%' + searchQuery2 + '%' }
]
}
});
Article.findAll({
where: {
$or: [
title: { like: '%' + searchQuery + '%' },
description: { like: '%' + searchQuery2 + '%' }
]
}
});
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 ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With