Jos*_*ela 2 javascript variables model-view-controller routes node.js
所以我有一个非常相似的用户视图和管理视图,只是管理视图可以将新数据上传到我的web应用程序,显示不同的图表; 因此,我想使用从数据库中获取数据的相同控制器.
在控制器中,我需要它来渲染我的用户视图或我的管理视图,所以我如何将其作为路径中的变量传递给控制器告诉控制器要渲染哪个视图.
例如,我有正常/用户路由,它所做的就是它
//users
router.get('/', uploadController.get_detail);
Run Code Online (Sandbox Code Playgroud)
对于/ admin路由,它需要首先确保凭证有效,然后呈现相同的控制器,但传入不同的变量.这是因为在控制器中我有:
// uploadController
res.render('VIEW', { title: 'Test', data: results });
Run Code Online (Sandbox Code Playgroud)
而VIEW是我想要变量的地方.因此,如果它来自/ users route,那么它会发送一个变量'users',这将呈现我的users.pug视图.与将显示我的admin.pug视图的/ admin路由相同.
它看起来像是uploadController.get_detail()一个中间件功能吗?所以它有一个看起来像这样的签名:
uploadController.get_detail(req, res, next)
Run Code Online (Sandbox Code Playgroud)
对?
您通常处理将数据传递到中间件的方法是将变量置于res.locals中间件上,然后中间件可以将其拾取.例如:
router.get('/',
function(req, res, next){
res.locals.admin = true
next()
},
uploadController.get_detail
);
Run Code Online (Sandbox Code Playgroud)
然后在get_detail()你可以从res对象中读取它:
uploadController.get_detail(req, res, next) {
if (res.locals.admin) {
// do admin stuff
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |