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

Ignorare i valori non definiti che vengono passati nel parametro dell'oggetto query per la funzione Trova di Mongoose?

Devi filtrare il tuo res.query prima l'oggetto da valori non definiti/vuoti, quindi passalo a find funzione. Se hai solo un paio di proprietà, puoi utilizzare if dichiarazione:

const query = req.query;
const conditions = {};

if (query.what) {
  conditions.what = query.what;
}

if (query.where) {
  conditions.where = query.where;
}

....


Sound.find(conditions, function () {});

Oppure, se ci sono molte proprietà, puoi scorrere su di esse:

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 () {});

Inoltre, non consiglierei di rimuovere le proprietà dall'attuale res.query oggetto - delete res.query.what - perché non potrai utilizzarlo in un altro middleware se lo desideri.