Mongoose $ regex не работает с новым регулярным выражением?

#javascript #regex #node.js #mongodb #mongoose

#javascript #регулярное выражение #node.js #mongodb #мангуст

Вопрос:

У меня возникли проблемы с выполнением запроса $ regex с помощью Mongoose;

Следующее работает просто отлично:

 Media.count(
    { "filename" : 
    { $regex: /placeholder(-)?(w .)?.(w )?$/gm } }, 
    function(err, res){
...
  

Следующее не работает:

 var xp = new RegExp("placeholder(-)?(w .)?.(w )?$", "gm")

Media.count(
    { "filename" : 
    { $regex: xp } }, 
    function(err, res){
...
  

Я также попробовал следующее, которое тоже не работает:

 var xp = new RegExp("placeholder(-)?(w .)?.(w )?$")

Media.count(
    { "filename" : 
    { $regex: xp, $options: 'gm' } }, 
    function(err, res){
...
  

По какой-то причине я чувствую, что Mongoose не принимает объекты регулярных выражений? Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно заменить ‘placeholder’ переменной, поэтому мне нужно использовать RegExp, чтобы это сделать…

У кого-нибудь раньше была такая проблема

Ответ №1:

Я только что узнал о своей ошибке, добавив ее сюда, если у кого-то еще есть такая же проблема:

При использовании нового регулярного выражения вам нужно убедиться, что вы избегаете обратной косой черты таким образом:

Правильный путь:

 var xp = new RegExp("placeholder(-)?(\w .)?.(\w )?$")
  

Неправильный путь:

 var xp = new RegExp("placeholder(-)?(w .)?.(w )?$")