Node.js 在并发请求的情况下,如何从请求设置全局变量

Node.js 在并发请求的情况下,如何从请求设置全局变量,node.js,express,Node.js,Express,我正在使用Node和express中的中间件动态路由我的应用程序。因此,我从req中提取参数来解析路由。 中间件如下所示: router.get('/', (req, res, next) => { global.c_name = req.params.c; next(); }); router.get('/a/:m/:controller/:action',(req, res, next) => { console.log(req.params); var co

我正在使用Node和express中的中间件动态路由我的应用程序。因此,我从req中提取参数来解析路由。 中间件如下所示:

router.get('/', (req, res, next) => {
global.c_name = req.params.c;
next();
 });

router.get('/a/:m/:controller/:action',(req, res, next) => {
    console.log(req.params);
    var controller = "./f/leg/fe/clients/"+req.params.c+"/main/process/"+req.params.m+"/controllers/"+req.params.controller;
    var controller_class = require(controller);
    console.log(controller);
    var controllerObj = new controller_class();
    var action = req.params.action;
    res.send(controllerObj[action]());
});
app.js

app.use('/:c/',middleware);

我的问题是,在并发请求的情况下,
global.c_name
变量将被另一个请求覆盖,这将破坏一切。我怎样才能避免这种情况?我必须动态执行此操作。

您可以将c_名称存储在express Session中,这看起来像一个简单的过程。为什么要将请求属性保存到全局对象?你发布了两条路线,但只在一条路线上使用?第二个路由的意义是什么?为什么要保留c的值?@MarkMeyer第一个路由只用于获取客户端的名称并将其存储在全局变量中,以便可以在require语句中访问它。该项目使用不同级别的继承,由于路由是动态的,因此我们需要相应的require语句。只有第二条路由用于解析请求和发送响应。