Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js moongoose数据库计数未定义_Javascript_Node.js_Mongodb_Model View Controller_Mongoose - Fatal编程技术网

Javascript Node.js moongoose数据库计数未定义

Javascript Node.js moongoose数据库计数未定义,javascript,node.js,mongodb,model-view-controller,mongoose,Javascript,Node.js,Mongodb,Model View Controller,Mongoose,我的猫鼬模型中有以下功能: UserSchema.methods.checkUsernameExists = function checkUsernameExists(req){ User.count({ username: req.body.username }, function(err, count){ if(err){ return console.error(err); } console.log(count); //Logs 2 }); }

我的猫鼬模型中有以下功能:

UserSchema.methods.checkUsernameExists = function checkUsernameExists(req){
User.count({ username: req.body.username }, function(err, count){
    if(err){
        return console.error(err);
    }
    console.log(count); //Logs 2
});
}
现在当我记录它时,它给出了正确的计数。但是如果我返回计数并尝试这样做,在我的一个控制器中,它返回undefined

var User = require("../models/user").User;
var user = new User();

exports.signup = function(req, res){
    var count = user.checkUsernameExists(req);
    console.log(test)
}

任何帮助都将不胜感激,谢谢。

记住节点是异步工作的,这意味着您不能像您的
checkUsernameExists
那样从执行异步函数的函数返回正常值

处理此问题的最常见方法是传递回调函数,该函数在检索值时调用:

UserSchema.methods.checkUsernameExists = function checkUsernameExists(req, callback) {
  User.count({ username: req.body.username }, callback);
};
这将把
err
count
变量作为
User.count
的参数传递给您提供的回调函数。使用:

user.checkUsernameExists(req, function(err, count) {
  if (err) {
    console.error(err);
  } else {
    console.log('the count is', count);
  }
});
要使函数符合其名称的建议,即“返回”一个布尔值以表示用户名是否已存在,您可以使用以下内容:

UserSchema.methods.checkUsernameExists = function checkUsernameExists(req, callback) {
  User.count({ username: req.body.username }, function(err, count) {
    if (err) {
      callback(err);
    } else {
      callback(null, count !== 0);
    }
  });
};

谢谢你的帮助!