sql >> Database >  >> NoSQL >> MongoDB

Niet-gedefinieerde waarden negeren die worden doorgegeven in de queryobjectparameter voor de zoekfunctie van Mongoose?

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.



  1. MongoDB gebruikt veel geheugen

  2. Mongoose Virtuals in MongoDB Aggregate

  3. Geen toegang tot com.mongodb.MongoClientSettings - MongoDB Java-stuurprogramma 3.7+

  4. Mongodb verzamelde argumenten voor $lookup moeten strings zijn