sql >> Database teknologi >  >> NoSQL >> MongoDB

Ignorerer udefinerede værdier, der sendes i forespørgselsobjektparameteren for Mongooses Find-funktion?

Du skal filtrere din res.query objekt fra udefinerede/tomme værdier først, og send det derefter til find fungere. Hvis du kun har et par egenskaber, kan du bruge if erklæring:

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 hvis der er mange egenskaber, kan du gentage 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 () {});

Jeg vil heller ikke anbefale at fjerne egenskaber fra den faktiske res.query objekt - delete res.query.what - fordi du ikke vil kunne bruge det i en anden middleware, hvis du vil.



  1. Geospatial $nær inden for den aktuelle dokumentfeltværdi

  2. Anbefalet database backend til blog

  3. db.collectionNames virker ikke i Node.js

  4. Forespørg en anden model i instansmetoden af ​​en anden model