在expression如何多个callback在app.get中工作
我是节点新手,所以请原谅我,如果我不明显。 在node.js中为app.get函数表示应用程序,我们通常将路由和视图作为parameter passing
app.get('/users', user.list);
但在护照谷歌的例子中,我发现他们称之为
app.get('/users', ensureAuthenticated, user.list);
其中ensureAuthenticated是一个函数
function ensureAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next(); } res.redirect('/login') }
总之,这意味着有多个callback,而这些callback在运行时被串联调用。 我试图添加更多的function,使其看起来像
app.get('/users', ensureAuthenticated, dummy1, dummy2, user.list);
我发现ensureAuthenticated,dummy1,dummy2,user.list被串联调用。
对于我的具体要求,我发现在上面的forms顺序调用函数是相当优雅的解决scheme,而不是使用asynchronous系列。 有人可以解释我是如何工作的,以及我可以如何实现类似的function。
在Express中,path后面的每个参数都按顺序调用。 通常,这是一种实现中间件的方式(正如您在所提供的示例中所见)。
app.get('/users', middleware1, middleware2, middleware3, processRequest); function middleware1(req, res, next){ // perform middleware function eg check if user is authenticated next(); // move on to the next middleware // or next(err); // trigger error handler, usually to serve error page eg 403, 501 etc }