MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Ignorer les valeurs non définies qui sont transmises dans le paramètre d'objet de requête pour la fonction Find de Mongoose ?

Vous devez filtrer votre res.query objet à partir de valeurs indéfinies/vides d'abord, puis passez-le à find fonction. Si vous n'avez que quelques propriétés, vous pouvez utiliser if déclaration :

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

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

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

....


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

Ou s'il y a beaucoup de propriétés, vous pouvez les parcourir :

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

De plus, je ne conseillerais pas de supprimer les propriétés du réel res.query objet - delete res.query.what - car vous ne pourrez pas l'utiliser dans un autre middleware si vous le souhaitez.