Ich habe den folgenden Code:node.js App: neue Fehler werfen (‚Can ‘ t-Header gesetzt, nachdem sie gesendet werden. ")
router.get('/:widget', function(req, res, next) {
var widget = req.params.widget;
if (! validate(widget)) {
res.status(400).send("Invalid widget");
return;
}
redis.hget("e:" + widget, 'ccid', function (e, d) {
if (e){
res.status(500).send("Database query failed");
return;
}
if (d) {
res.status(200).send("Resource found");
return;
} else {
res.status(400).send("Unknown widget");
return;
}
});
res.status(200).send("why are you here?");
return;
});
Ich hatte den Eindruck, dass, wenn der Code schlägt ein "return" ... es verlässt die Funktion. Aber was passiert zu sein scheint, ist, dass, wenn die Logik trifft das:
res.status(400).send("Unknown widget");
return;
Weg, es immer noch die auch
res.status(200).send("why are you here?");
return;
trifft. Ich dachte, dass es die Methode verlassen hätte. Klar liege ich falsch ... weil ich die obige Fehlermeldung bekomme. Der Fehler verschwindet, wenn ich res.send() und return() nach dem Aufruf redis.hget lösche.
Was sollte ich anstelle der "Return" -Anweisung nach jedem res.status() verwenden. Send()?
Mit einem 'return' _does_ beenden Sie die Funktion. Aber in deinem Fall verlässt es _callback_ du gehst zu '.hget', du bist immer noch innerhalb' .get ('/: widget' ...) '. – vlaz