Estoy tratando de recibir multiples parametros sin saber cual llega y cual no, para filtrar un GET en el metodo find()
NODO JAVASCRIPT MONGOOSE
app.get('/venta', async (req, res) =>{ let a = req.query.anio; let f = req.query.fecha; let c = req.query.cajas; let q = {}; if(a != undefined) q.anio = a; if(f != undefined) q.fecha = f; if(c != undefined) q.cajas = c; Venta.find({$or: [q]}).exec((err,ventas)=>{ if(err) return res.status(400).json({ ok: false, mensaje: 'no se encontro las ventas' }) return res.json({ ok: true, ventas }) }); })Se me ocurrió armar una lista de "q" e insertar los filtros que se alcanzan en la solicitud. $ O no funciona
PREGUNTA> ¿Cómo puedo completar el método FIND () en función de la cantidad de filtros que estoy recibiendo en la solicitud?
gracias
si desea cualquier documento que cumpla con una de las condiciones, debe ser una lista de condiciones. [q] es solo una matriz con un elemento que contiene todos los filtros con una conjunción y. para tener la funcionalidad $or debería ser $or = [{anio:a},{fecha:f},{cajas:c}] para un número arbitrario de filtros que puede recorrer en los pares de valores clave de req.query y insértelos en una matriz en consecuencia. como en el ejemplo mostrado