Mongoose: как создать определенные критерии поля в переменной

#javascript #node.js #mongodb #express #mongoose

#javascript #node.js #mongodb #выразить #мангуст

Вопрос:

Я пытаюсь создать форму расширенного поиска, которая принимает несколько критериев и включает их в поиск мангуста, это тот подход, о котором я думал

 router.post('/search/university', function(req, res) {
  var university = req.body.university.toLowerCase();
  var searchCriteria = education_key   ":"   {$RegExp("^"   university)};
  User.find({searchCriteria}, function(err, matching_users){
    res.render('searchresults', {user_array : matching_users, school : req.body.university});
  });
});
  

Однако я не могу просто построить критерии поиска таким образом, потому что, по-видимому, есть круглые скобки и тому подобное, которые не работают.

Ответ №1:

Вы должны манипулировать этим как объектами JavaScript, а не пытаться создавать строки:

 router.post('/search/university', function(req, res) {
  var university = req.body.university.toLowerCase();
  var searchCriteria = { "education_key": {}};

  searchCriteria["education_key"] = { "$regex": "^"   university };

  User.find(searchCriteria, function(err, matching_users){
    res.render('searchresults', {user_array : matching_users, school : req.body.university});
  });
});
  

$regex Оператор является необязательным, но это безопасный способ убедиться, что сериализация работает правильно