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.
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.
Respuestas:
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);