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.