Sie müssen Ihre res.query
filtern Objekt zuerst aus undefinierten/leeren Werten und übergebe es dann an find
Funktion. Wenn Sie nur ein paar Eigenschaften haben, können Sie if
verwenden Aussage:
const query = req.query;
const conditions = {};
if (query.what) {
conditions.what = query.what;
}
if (query.where) {
conditions.where = query.where;
}
....
Sound.find(conditions, function () {});
Oder wenn es viele Eigenschaften gibt, können Sie sie durchlaufen:
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 () {});
Außerdem würde ich nicht raten, Eigenschaften aus der eigentlichen res.query
zu entfernen Objekt - delete res.query.what
- weil Sie es nicht in einer anderen Middleware verwenden können, wenn Sie möchten.