Javascript 节点js自定义回调函数错误

Javascript 节点js自定义回调函数错误,javascript,node.js,callback,Javascript,Node.js,Callback,我正在尝试使用NodeJS进行简单的身份验证。因为我从数据库读取用户数据,所以必须使其异步。下面是我的函数,它检查身份验证是否正常: function auth(req, callback) { var header = req.headers['authorization']; console.log(cb.type); console.log("Authorization Header is: ", header); if(!header) {

我正在尝试使用NodeJS进行简单的身份验证。因为我从数据库读取用户数据,所以必须使其异步。下面是我的函数,它检查身份验证是否正常:

function auth(req, callback) {
    var header = req.headers['authorization'];
    console.log(cb.type);
    console.log("Authorization Header is: ", header);
    if(!header) {
        callback(false);
    }
    else if(header) { 
        var tmp = header.split(' ');
        var buf = new Buffer(tmp[1], 'base64');
        var plain_auth = buf.toString();
        console.log("Decoded Authorization ", plain_auth);
        var creds = plain_auth.split(':');
        var name = creds[0];
        var password = creds[1];

        User.findOne({name:name, password:password}, function(err, user) {
            if (user){
                callback(true);
            }else {
                callback(false);
            }
        });            
    }       
}
这里我调用函数:

auth (req, function (success){                
    if (!success){
        res.setHeader('WWW-Authenticate', 'Basic realm="myRealm');
        res.status(401).send("Unauthorized");
    }else{                             
        if(user!==req.user) {
            res.status(403).send("Unauthorized");
        }else{
            User.findOneAndUpdate({user:userid}, {user:req.body.user, name:req.body.name, email:req.user.email, password:User.generateHash(req.body.password)},
            {upsert:true}, function(err, user) {
                if(!err) {
                    res.status(200).send("OK");
                }else{
                    res.status(400).send("Error");
                }
            });
        }
    }
});

这给了我一个错误“TypeError:对象不是函数”,指向“回调(false)”。我不知道是什么导致了这个错误,因为我将函数作为参数传递,第一条日志消息打印“[function]”。任何帮助都将不胜感激。

您的日志消息引用了
cb.type
,但您的函数签名和调用显示了
回调
。我猜想这种不一致性可能是问题的根源,或者如果它们是一致的,至少可以更好地揭示问题。实际上,我所有的回调在我自己的代码中都被称为“cb”,我只是在编写该消息时为了清楚起见对其进行了扩展。我在
auth()
方法的任何地方都看不到
res
。那会引起问题。另外,哪个
回调(false)
会导致问题-第一个代码段顶部或底部的问题?它看起来应该可以工作了…可能是