app.get() Node.js 中的第三个参数与 Express
app.get() third parameter in Node.js with Express
我正在学习一个关于使用 Node.js 包 Passport (链接) 进行用户身份验证的优秀教程,我遇到了一段我真的不明白的代码:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('profile.ejs', {
user : req.user // get the user out of session and pass to template
});
});
我的问题是isLoggedIn
参数。我查看了官方网站,并在谷歌上搜索了一些,但没有任何地方说您可以将三个参数传递给app.get
。我只见过两个。第三个(可选,我假设)参数是什么?
我不是在问isLoggedIn
本身,而是在问这样一个事实,即这是我以前从未见过的第三个参数传入app.get()
。
它被称为中间件,在第三个参数(回调)之前调用。
中间件功能示例:访问检查,在传递资源之前检查用户是否已登录等。
它在快速文档中: http://expressjs.com/en/5x/api.html#app.get
语法为: app.get(path, callback [, callback ...])
即 app.get(path, ...callback)
语法包括将路径作为第一个参数,后跟任意数量的中间件(有权访问请求和响应)回调函数。它不限于一个。它们是异步的,并通过调用 next() 参数链接在一起。
function callbackOne(req, res, next) {
//some code
next();
}
function callbackTwo(req, res, next) {
//some code
res.render();
}
app.get(path, callbackOne, callbackTwo)
因此,在您的情况下,isLoggedIn 参数只是另一个中间件函数,如果用户登录以执行第三个参数,则最终会调用 next()。
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何使用参数按顺序运行三个任务
- ruby Mustache.render没有像JS Mustache.render这样的部分的第三个参数
- 将变量传递给第三个参数的 GSAP TimeLineLite.to() 不起作用
- 如何创建和调用接受三个参数(页面长度)并计算块面积的 JavaScript 函数
- 第三个是bean.fire事件中的第三个参数
- showModalDialog第三个参数错误
- 将0分配给JavaScriptDate()对象的第三个参数将始终创建月末日期
- 这个dat.gui添加函数中第三个参数的含义是什么
- deviceready'中第三个参数的用途是什么;电话间隙中的听众
- 函数只看到三个参数
- 可以'在angularjs热键中找不到第三个参数的作用
- Jquery html传递一个值作为第三个参数
- 一个有三个参数的自执行匿名函数的意义是什么
- JSON.stringify第三个参数的行为
- 如何使用Bluebird.js nodeify将第三个参数传递给回调函数
- Javascript - Array.prototype.forEach() -是必需的三个参数
- app.get() Node.js 中的第三个参数与 Express
- 选择性地改变一个类的三个参数
- XMLHttpRequest.打开第三个参数false不给php mysql在iPad上的查询结果