sql >> Databáze >  >> NoSQL >> MongoDB

Ignorovat nedefinované hodnoty, které jsou předány v parametru objektu dotazu pro funkci Najít Mongoose?

Musíte filtrovat res.query objekt nejprve z nedefinovaných/prázdných hodnot a poté jej předejte find funkce. Pokud máte jen několik vlastností, můžete použít if prohlášení:

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

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

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

....


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

Nebo pokud existuje mnoho vlastností, můžete je iterovat:

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

Také bych nedoporučoval odstraňovat vlastnosti ze skutečného res.query objekt - delete res.query.what - protože jej nebudete moci použít v jiném middlewaru, pokud byste chtěli.



  1. Chyba zpětné smyčky:Vyžaduje se autorizace

  2. Odfiltrujte duplicitní pole a vraťte jedinečné pole v agregaci mongodb

  3. Co je přísný režim MongoDBs a je dobré ho používat?

  4. Správné skrytí přihlašovacích údajů k databázi