res.query
をフィルタリングする必要があります 最初に未定義/空の値からオブジェクトを取得し、次にそれをfind
に渡します 関数。プロパティが2つしかない場合は、if
を使用できます。 ステートメント:
const query = req.query;
const conditions = {};
if (query.what) {
conditions.what = query.what;
}
if (query.where) {
conditions.where = query.where;
}
....
Sound.find(conditions, function () {});
または、プロパティがたくさんある場合は、それらを反復処理できます:
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 () {});
また、実際のres.query
からプロパティを削除することはお勧めしません オブジェクト-delete res.query.what
-必要に応じて、別のミドルウェアで使用することはできません。