Olá tudo bem?
Tenho duas questões. Mas primeiro vamos ver meu m,étodo como está:
static async getAllTurmas(req, resp){
const where = {};
const {data_inicial, data_final} = req.query;
data_inicial || data_final ? where.data_inicio = {} : null;
data_inicial ? where.data_inicio[Op.gte] = data_inicial : null;
data_final ? where.data_inicio[Op.lte] = data_final : null;
console.log(where);
try{
const turmas = await database.Turmas.findAll({where})
return resp.status(200).json(turmas)
}catch(error){
return resp.status(500).json(error.message)
}
}
Primeira questão: Se nos demais métodos para fazer uma busca com parâmetro where eu precisava colocolar o where como chave do objeto da função ( exemplo: const turma = await database.Turmas.findOne({where: {id: Number(id)}})
) por que nesse caso a chave passa a ser o data_inio e não o where que possui como valor o objeto que, aí sim, teria o data_inicio como chave e o valor com operadores? O objeto where fica assim:
{ data_inicio: { [Symbol(gte)]: '2020-01-01' } }
ou seja é como se escrevesse assim:
const turmas = await database.Turmas.findAll({{ data_inicio: { [Symbol(gte)]: '2020-01-01' } } )
por que isso funciona?
A segunda questão: foi passada a seguinte query na rota:
...rota normal...?data_inicial=2020-01-01& data_final=2020-06-20
antes disso coloquei um dos elementos com datas depois de 20/06/2020 para fazer o teste, no entanto o elemento continuou aparecendo, isso porque , se reparar no objeto que saiu no conosole.log, ou seja { data_inicio: { [Symbol(gte)]: '2020-01-01' } }
, ele apenas está levando em consideração a primeira data, a segunda data não é colocada em operação lógica no filtro.
Por que isso acontece? Aonde está minha falha?
se puderem me ajudar ficarei extremamente grato :D