MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Ignorar valores indefinidos que são passados ​​no parâmetro do objeto de consulta para a função Find do Mongoose?


Você precisa filtrar seu res.query objeto de valores indefinidos/vazios primeiro e, em seguida, passe-o para find função. Se você tiver apenas algumas propriedades, poderá usar if declaração:
const query = req.query;
const conditions = {};

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

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

....


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

Ou se houver muitas propriedades, você pode iterar sobre elas:
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 () {});

Além disso, eu não aconselharia remover propriedades do res.query real objeto - delete res.query.what - porque você não poderá usá-lo em outro middleware se desejar.