MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Игнориране на недефинирани стойности, които се предават в параметъра на обекта на заявката за функцията Find на Mongoose?

Трябва да филтрирате своята res.query обект първо от недефинирани/празни стойности и след това го предайте на find функция. Ако имате само няколко свойства, можете да използвате if изявление:

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

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

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

....


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

Или ако има много свойства, можете да ги итерирате:

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

Освен това не бих посъветвал да премахвате свойства от действителната res.query обект - delete res.query.what - защото няма да можете да го използвате в друг междинен софтуер, ако искате.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Добавете валидатор към колекция Mongodb с pymongo

  2. Използвайте pymongo в django директно

  3. Геопространствено индексиране Не е намерено картографиране за поле с YAML

  4. Връщане само на конкретни полета от поддокумента на проекционния масив

  5. MongoDB използва много памет