Ich habe einen einfachen Server geschrieben und bin auf ein Problem gestoßen, bei dem ich einen Callback-Fehler bekomme, obwohl er einen Callback-Parameter in meinem Funktionskopf hat. Jedes Beispiel, das ich bei Google gesehen habe, waren Leute, die keinen Callback-Parameter hatten, aber ich habe anscheinend einen? Der Fehler, der ausgelöst wird, ist TypeError: Callback ist keine Funktion.NodeJS Callback keine Funktion Async Wasserfall
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);});
});
Okay, * wo * erhalten Sie den Fehler? –
Es gibt einen Kommentar im Code, direkt unter "SELECT * FROM Benutzer WHERE INSTR". Header der Async-Funktion ist Funktion (err, token, callback). Sorry, wenn der Code schwer zu lesen ist, hat stackoverflow den Tabbing/Abstand verschraubt. –
Danke. Das habe ich übersehen. Das Problem ist für mich noch nicht offensichtlich. Hast du gesehen, was Callback ist, ob es definiert ist? Funktioniert alles (wie die JWT-Validierung) wie erwartet? Ich frage, weil Aufruf 'res.end();' * gefolgt von * 'Rückruf (" JWT Auth failed ", ...' scheint mir als ungewöhnlich, obwohl vielleicht nicht unbedingt falsch. –