[英]NodeJS Callback not a function Async waterfall
I've been writing a simple server, and have come across an issue where I get a callback undefined error, despite having a callback parameter in my function header. 我一直在编写一个简单的服务器,遇到一个问题,尽管我的函数头中有一个回调参数,但我得到了一个回调未定义错误。 Every example I've seen on Google has been people not having a callback parameter, but I seem to have one?
我在Google上看到的每个示例都是没有回调参数的人,但是我似乎有一个? The error that is thrown is TypeError: callback is not a function.
引发的错误是TypeError:回调不是函数。
Code: 码:
app.post("/api/info/", function(req, res){
async.waterfall([
function(callback){
debugger;
jwt.verify(req.body.jwt, secret.secret, {ignoreExpiration: false},
function(err, decoded){
console.log(err);
console.log(decoded.uuid);
debugger;
if(err) {
debugger;
console.log("error1: " + err);
debugger;
res.json({
status: 403
});
res.end();
callback("JWT auth failed", null);
return;
}
debugger;
callback(null, decoded.uuid);
});
},
function(err, token, callback){ //query db for user uuid
debugger;
pool.query("SELECT * FROM users WHERE INSTR (uuid," + "'" + token + "') > 0", function(err, rows){
if(err) console.log(err);
debugger;
callback(rows); //where it errors
});
},
function(rows, callback){ //get user's school name
debugger;
var schoolId = rows[0].chapter_uuid;
pool.query("SELECT * FROM chapters WHERE INSTR (uuid," + "'" + schoolId + "') > 0", function(err, result){
debugger;
callback(rows, result[0].school);
});
},
function(rows, chapter, callback){ //return db results to user in json
debugger;
var canMakeEvent = 0;
if(rows[0].is_board){
canMakeEvent = 1;
}
var info = {
firstName: rows[0].first_name,
lastName: rows[0].last_name,
email: rows[0].email,
chapter: chapter,
isBoard: canMakeEvent,
boardPosition: rows[0].board_position
};
res.json({
status: 200,
info: info
});
res.end();
debugger;
callback(null);
}
], function(err){console.log(err);});
});
function(err, token, callback){ //query db for user uuid
debugger;
pool.query("SELECT * FROM users WHERE INSTR (uuid," + "'" + token + "') > 0", function(err, rows){
if(err) console.log(err);
debugger;
callback(null,rows); //where it errors
});
},
The inner function in pool.query
takes 2 parameters: err
and rows
. pool.query
的内部函数采用2个参数: err
和rows
。 So in the returning callback
, it requires 2 parameters. 因此,在返回的
callback
,它需要2个参数。 Since 1st parameter is err
, in callback
use null
since it need to be called only if(!err)
condition is satisfied. 由于第一个参数是
err
,因此在callback
使用null
因为只有if(!err)
满足if(!err)
条件时才需要调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.