Olá Kaique, tudo bem com você? Espero que sim!
Peço desculpa pela demora em responder o seu tópico.
No Sequelize, é possível utilizar o método Op.and para combinar vários filtros de forma dinâmica e sem a necessidade de montar manualmente as combinações.
Por exemplo, suponha que você tenha 5 filtros independentes que precisam ser combinados: filtro1, filtro2, filtro3, filtro4 e filtro5. Para combiná-los com o operador AND, você pode fazer o seguinte:
const { Op } = require('sequelize');
const filtros = {};
if (filtro1) {
filtros.filtro1 = filtro1;
}
if (filtro2) {
filtros.filtro2 = filtro2;
}
if (filtro3) {
filtros.filtro3 = filtro3;
}
if (filtro4) {
filtros.filtro4 = filtro4;
}
if (filtro5) {
filtros.filtro5 = filtro5;
}
const resultado = await Modelo.findAll({
where: {
[Op.and]: filtros
}
});
Nesse exemplo, os filtros são adicionados dinamicamente ao objeto filtros apenas se eles estiverem definidos. Em seguida, o operador AND é aplicado ao objeto filtros utilizando a constante Op.and do Sequelize.
Dessa forma, você pode combinar vários filtros de forma dinâmica e sem a necessidade de montar manualmente as combinações. Além disso, é possível evitar a possibilidade de enviar uma propriedade como null sem querer, já que apenas os filtros definidos serão adicionados ao objeto filtros.
Espero ter ajudado. Caso tenha mais perguntas, estarei a disposição para ajudá-lo.
No mais, grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.