MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Undefinierte Werte ignorieren, die im Abfrageobjektparameter für die Find-Funktion von Mongoose übergeben werden?

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.