sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Ignorar los valores indefinidos que se pasan en el parámetro del objeto de consulta para la función Buscar de Mongoose?

Tienes que filtrar tu res.query objeto de valores indefinidos/vacíos primero, y luego páselo a find función. Si solo tiene un par de propiedades, puede usar if declaración:

const query = req.query;
const conditions = {};

if (query.what) {
  conditions.what = query.what;
}

if (query.where) {
  conditions.where = query.where;
}

....


Sound.find(conditions, function () {});

O si hay muchas propiedades, puede iterar sobre ellas:

const query = req.query;
const conditions = Object.keys(query)
  .reduce((result, key) => {
    if (query[key]) {
      result[key] = query[key];
    }
    return result;
}, {}); 

Sound.find(conditions, function () {});

Además, no recomendaría eliminar propiedades del res.query real. objeto - delete res.query.what - porque no podrá usarlo en otro middleware si lo desea.