Mongodb Mongo查询总是返回数据库中存在的值,但它不存在

Mongodb Mongo查询总是返回数据库中存在的值,但它不存在,mongodb,mongoose,Mongodb,Mongoose,我试图在mongodb中查询名称字段,使用下面的代码,我总是得到值重复的响应 var checkUserName = function (userName, email, res){ User.findOne({ name : userName }, function () { if(userName && typeof userName !== 'undefined'){ res.send("duplicate");

我试图在mongodb中查询名称字段,使用下面的代码,我总是得到值重复的响应

var checkUserName =  function (userName, email, res){
    User.findOne({ name : userName }, function () {
        if(userName  && typeof userName !== 'undefined'){
            res.send("duplicate");
        }else{
            checkEmail(email);
        }
    });
}

您当前完全忽略了数据库中的答案,只是再次检查您的输入。这是行不通的。Mongoose将查询的答案作为回调函数的第二个参数返回(第一个参数总是用来表示错误)-请尝试以下操作:

var checkUserName =  function (userName, email, res){

  User.findOne({ name : userName }, function (err, userFromDb) {
    if (err) {
        console.log("there was an error: " + err;
        return res.send("err: " + err.message);
    }
    if(userFromDb) {
        res.send("duplicate");
    } else {
        checkEmail(email);
    }
  });
}

我是mongo的新手,但我认为如果(userName&&typeof userName!=='undefined')总是会告诉你真的。。就我所知。。findOne只会给你带来一个结果,即使你有多个。。。所以也许mongo有一些方法来解决这个问题,或者把所有的东西都拿来,并使用长度属性。。。