在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 }