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