gpt4 book ai didi

javascript - 如何将变量从路由传递到 Controller Node.js JavaScript

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:24 25 4
gpt4 key购买 nike

所以我有一个用户 View 和一个管理 View ,它们非常相似,只是管理 View 可以将新数据上传到我的显示不同图表的网络应用程序;因此我想使用从数据库获取数据的同一个 Controller 。

在 Controller 中,我需要它来呈现我的用户 View 或我的管理 View ,所以我如何将它作为变量从路由中传递以告诉 Controller 要呈现哪个 View 。

例如,我有一个普通的/users 路由,它所做的就是

//users

router.get('/', uploadController.get_detail);

对于/admin 路由,它需要首先确保凭据有效,然后呈现相同的 Controller 但传入不同的变量。这是因为在 Controller 中我有:

// uploadController

res.render('VIEW', { title: 'Test', data: results });

而 VIEW 是我希望变量去的地方。因此,如果它来自/users 路由,则会向它发送一个变量“users”,这将呈现我的 users.pug View 。与将呈现我的 admin.pug View 的/admin 路由相同。

最佳答案

看起来 uploadController.get_detail() 是一个中间件函数吧?所以它有一个看起来像这样的签名:

uploadController.get_detail(req, res, next)

对吗?

通常处理将数据传递给中间件的方法是在 res.locals 上放置一个变量,然后中间件可以获取它。例如:

router.get('/', 
function(req, res, next){
res.locals.admin = true
next()
},
uploadController.get_detail
);

然后在 get_detail() 中,您可以从 res 对象中读取它:

uploadController.get_detail(req, res, next) {
if (res.locals.admin) {
// do admin stuff
}
}

关于javascript - 如何将变量从路由传递到 Controller Node.js JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com