2015-11-12 3 views
6

Я хочу, чтобы проверить с mongodb если nickname и password являются true им пытаются использовать оператор $and с $regex, но я не могу заставить его работать. Может ли кто-нибудь помочь мне с этим в руке?Проверьте значения вышлет в MongoDB

checkNickname: function(nickname, password){ 
    var reNick = new RegExp(nickname, "i"), 
     rePass = new RegExp(password, "i"); 
    getProfile.find({ $and : [{ 
     nickname: { $ne: { $regex: reNick } } }, 
     { password: { $ne: { $regex: rePass} } } 
    ]}, function(data){ 
     console.log(data) 
    }); 
}, 

ответ

4

Это будет делать это для вас,

checkNickname: function(nickname, password){ 
     var reNick = new RegExp("/^" + nickname + ".*/", "i"), 
      rePass = new RegExp("/^" + password + ".*/", "i"); 
     getProfile.find({ 
        nickname: { $not: reNick }, 
        password: { $not: rePass } 
      }, function(err, data) { 
      console.log(data) 
     }); 
    } 
1

Как уже вы не можете иметь $regex в качестве аргумента в $ne, но вы можете negate your regex.

checkNickname: function(nickname, password){ 
    var reNick = RegExp("^((?!"+nickname+").)*$", "i"); 
    var rePass = new RegExp("^((?!"+password+").)*$", "i"); 
    getProfile.find({ nickname: reNick, password: rePass }, function(err, data) { 
     console.log(data) 
    }); 
}; 
+2

функция находкой принимает два аргумента, первый всегда err, поэтому он должен быть 'function (err, data) { if (err) throw err; console.log (data) }); ' –

+0

С' data' в качестве второго аргумента я получаю теперь массив, но его пустой я думаю, что это означает, что совпадение не найдено. –

+0

Да, это то, что означает – styvane

Смежные вопросы