Du måste filtrera din res.query
objekt från odefinierade/tomma värden först och skicka det sedan till find
fungera. Om du bara har ett par egenskaper kan du använda if
uttalande:
const query = req.query;
const conditions = {};
if (query.what) {
conditions.what = query.what;
}
if (query.where) {
conditions.where = query.where;
}
....
Sound.find(conditions, function () {});
Eller om det finns många egenskaper kan du upprepa dem:
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 () {});
Dessutom skulle jag inte råda dig att ta bort egenskaper från den faktiska res.query
objekt - delete res.query.what
- eftersom du inte kommer att kunna använda den i en annan mellanprogramvara om du skulle vilja.