https://github.com/hwz/chirp/blob/master/module-5/completed/routes/api.jsritorno next() in confusione nodejs
function isAuthenticated (req, res, next) {
// if user is authenticated in the session, call the next() to call the next request handler
// Passport adds this method to request object. A middleware is allowed to add properties to
// request and response objects
//allow all get request methods
if(req.method === "GET"){
return next();
}
if (req.isAuthenticated()){
return next();
}
// if the user is not authenticated then redirect him to the login page
return res.redirect('/#login');
};
Perché l'autore fanno return next()
invece di next()
? So che next()
è quello di consentire al flusso di passare al middleware o alla funzione successiva, ma perché è necessario un codice return
per next()
precedente?
Quindi 'isAuthenticated' restituisce qualunque cosa' next() 'restituisce. Questo potrebbe non essere un valore utile, intendiamoci. –
possibile duplicato di http://stackoverflow.com/questions/16810449/when-to-use-next-and-return-next-in-node-js ma è valida e buona domanda –
Nel contesto di middle-ware espresso è necessario arrestare l'esecuzione di quel pezzo specifico di middleware se dovesse cadere in una di quelle istruzioni if. Chiamando 'next' dice express 'im done here move on' comunque senza il' return' potrebbe chiamare 'next' ma poi prova anche ad eseguire un reindirizzamento. – ste2425