Найти в Mongoose из объекта запроса, извлеченного из строки запроса - PullRequest
0 голосов
/ 11 декабря 2018

Я беру строку запроса из URL-адреса и анализирую, а затем сопоставляю ее, чтобы получить объект, подобный этому:

{ '$and': [ { length: { '$gt': '2' } }, { length: { '$lt': '55555' } } ] }

Что такое const с именем q.

Так как бы поступил Mongooseпоиск запроса похож?Я попробовал это:

  Schema.find(q, function (err, results) {
    if (err) {
      console.log(err);
    }
    else {
      console.log(results);
    }
  });

Но он возвращает пустые списки ([]).После входа в консоль q это выводит на консоль:

{ '$and': [ { length: [Object] }, { length: [Object] } ] }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018
 const q= { '$and': [ { length: { '$gt': '2' } }, { length: { '$lt': '55555' } } ] }

// converting string key to integer

q['$and'].map(function(obj) {

    for(var prop in obj.length){
        if(obj.length.hasOwnProperty(prop) && obj.length[prop] !== null && !isNaN(obj.length[prop])){
            obj.length[prop] = +obj.length[prop];   
        }
    }
});

console.log(q)

Schema.find(q, function (err, results) {
    if (err) {
      console.log(err);
    }
    else {
      console.log(results);
    }
  });
0 голосов
/ 11 декабря 2018

- fix - использовать значение как число, потому что в вашей базе данных длина приводится как число

db.collection.find({
  "$and": [
    {
      length: {
        "$gt": 2 // not '2'
      }
    },
    {
      length: {
        "$lt": 55555 // not '55555'
      }
    }
  ]
})

https://mongoplayground.net/p/aJVF9QfDeKy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...