sql >> Databasteknik >  >> NoSQL >> MongoDB

Ignorera odefinierade värden som skickas i frågeobjektsparametern för Mongooses sökfunktion?

Du måste filtrera din res.query objekt från odefinierade/tomma värden först och skicka det sedan till find fungera. Om du bara har ett par egenskaper kan du använda if uttalande:

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 om det finns många egenskaper kan du upprepa 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 () {});

Dessutom skulle jag inte råda dig att ta bort egenskaper från den faktiska res.query objekt - delete res.query.what - eftersom du inte kommer att kunna använda den i en annan mellanprogramvara om du skulle vilja.



  1. mongodb unwind array kapslad inuti en array av dokument

  2. Node.js och Mongodb - TypeError:undefined är inte en funktion

  3. Komma igång med PHP och MongoDB

  4. Redis – Överväg att byta namn på en av bönorna eller aktivera åsidosättning genom att ställa in spring.main.allow-bean-definition-overriding=true