Am Ende einer app.post -Funktion versuche ich, Benutzer auf eine andere Seite umzuleiten (immer auf der "massChangesSubmitted" Seite endet). Ich bekomme den Fehler Error: Can't set headers after they are sent.
, wenn es die Zeile return res.redirect('/mass_changes')
trifft. Der SQL-Abschnitt des Codes funktioniert großartig, das einzige, was fehlschlägt, ist die Umleitung.NodeJS kann keinen Header-Fehler bei res.redirect setzen
Ich kann nicht für das Leben von mir herauszufinden, warum das passiert. Alles, was ich online finde, sagt, dass die res.redirect-Leitung funktionieren sollte. Bitte helfen Sie!
Postleitzahl
app.post('/massChangesSubmitted', function(req, res){
res.status(200).end();
massChangesSubmitted(function(err){});
return res.redirect('/mass_changes');
});
massChangesSubmitted Code
function massChangesSubmitted(callback) {
var sql = 'UPDATE mass_changes SET submitted=1, submitted_datetime=now() WHERE submitted=0';
var dbh = mysql.createConnection(config.db["DB"])
dbh.query(sql, function(err, rows) {
if(err) {
callback(-1); // call callback with error.
} else {
callback(1); // call callback function without error.
console.log("Existing Mass Changes considered submitted")
};
dbh.end();
});
};
Das Setzen eines Status von 200 gefolgt von einer Weiterleitung, die ihren eigenen Status (302) setzt, ist ein wenig überflüssig. – robertklep
hat es korrigiert. Vielleicht muss das OP 200 senden, um diese Alternative vorzuschlagen. –
Ich bin mir ziemlich sicher, dass sie nur 'res.redirect ('/ mass_changes')' wollen. Eine Weiterleitung mit einem 200-Status ist keine Weiterleitung. – robertklep