U moet uw res.query
filter filteren object van ongedefinieerde/lege waarden eerst, en geef het dan door aan find
functie. Als u slechts een paar eigenschappen heeft, kunt u if
. gebruiken verklaring:
const query = req.query;
const conditions = {};
if (query.what) {
conditions.what = query.what;
}
if (query.where) {
conditions.where = query.where;
}
....
Sound.find(conditions, function () {});
Of als er veel eigenschappen zijn, kunt u deze herhalen:
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 () {});
Ik zou ook niet adviseren om eigenschappen te verwijderen uit de daadwerkelijke res.query
object - delete res.query.what
- omdat u het niet in een andere middleware kunt gebruiken als u dat zou willen.