Veo mucho uso next
en node.js.
¿Qué es, de dónde viene? ¿Qué hace? ¿Puedo usarlo del lado del cliente?
Lo sentimos, por ejemplo, se usa aquí: http://dailyjs.com/2010/12/06/node-tutorial-5/
busque la función loadUser.
fuente
Veo mucho uso next
en node.js.
¿Qué es, de dónde viene? ¿Qué hace? ¿Puedo usarlo del lado del cliente?
Lo sentimos, por ejemplo, se usa aquí: http://dailyjs.com/2010/12/06/node-tutorial-5/
busque la función loadUser.
Esto parece ser una convención de nomenclatura variable en el código de flujo de control de Node.js, donde se da una referencia a la siguiente función a ejecutar a una devolución de llamada para que se inicie cuando se hace.
Vea, por ejemplo, los ejemplos de código aquí:
Veamos el ejemplo que publicaste:
function loadUser(req, res, next) {
if (req.session.user_id) {
User.findById(req.session.user_id, function(user) {
if (user) {
req.currentUser = user;
return next();
} else {
res.redirect('/sessions/new');
}
});
} else {
res.redirect('/sessions/new');
}
}
app.get('/documents.:format?', loadUser, function(req, res) {
// ...
});
La loadUser
función espera una función en su tercer argumento, que está vinculado al nombre next
. Este es un parámetro de función normal. Contiene una referencia a la siguiente acción a realizar y se llama una vez que loadUser
se realiza (a menos que no se pueda encontrar un usuario).
No hay nada especial sobre el nombre next
en este ejemplo; podríamos haberle dado cualquier nombre.
.next()
. Parece preguntar sobre next
como un método en un objeto.
return next();
return callback()
lugar dereturn next()
Es una convención de nomenclatura utilizada al pasar devoluciones de llamada en situaciones que requieren la ejecución en serie de acciones, por ejemplo, escanear directorio -> leer datos de archivo -> hacer algo con datos. Esto es preferible a anidar profundamente las devoluciones de llamada. Las primeras tres secciones del siguiente artículo en el blog HowToNode de Tim Caswell dan una buena descripción de esto:
http://howtonode.org/control-flow
Consulte también la sección Acciones secuenciales de la segunda parte de esa publicación:
Básicamente es como una devolución de llamada que express.js usa después de que se ejecuta y se hace una cierta parte del código, puede usarlo para asegurarse de que se haga parte del código y de lo que desea hacer, pero siempre tenga en cuenta que solo puede haz uno res.send
en cada bloque REST ...
Entonces puedes hacer algo como esto como un simple next()
ejemplo:
app.get("/", (req, res, next) => {
console.log("req:", req, "res:", res);
res.send(["data": "whatever"]);
next();
},(req, res) =>
console.log("it's all done!");
);
También es muy útil cuando desea tener un middleware en su aplicación ...
Para cargar la función de middleware, llame a app.use (), especificando la función de middleware. Por ejemplo, el siguiente código carga la función de middleware myLogger antes de la ruta a la ruta raíz (/).
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
})
app.listen(3000);