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

时间:2014-04-06 15:05:17

标签: javascript node.js callback

我正在尝试使用节点js进行简单的身份验证。因为我从数据库中读取用户数据,所以我必须使其异步。这是我的功能,它检查身份验证是否正常:

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:object is not function”,指向“callback(false)”。我不知道是什么原因导致这个错误,因为我将一个函数作为参数传递,并且第一条日志消息打印“[function]”。任何帮助将不胜感激。

0 个答案:

没有答案