如果回调函数没有'req'参数,我该如何访问req对象。
情景如下:
在ExpressJs中,我有一个通用的函数,用来处理'req'对象的某些事情,但不将'req'传递给它。
module.exports = {
get: function(){
var req = global.currentRequest;
//do something...
}
}
目前我的解决方案是编写一个中间件来处理所有的请求,将请求存储在全局变量'req'中,然后我就可以通过'global.currentRequest'在任何地方使用'req'了。
// in app.js
app.use(function (req, res, next) {
global.currentRequest= req;
next();
});
但我不知道它是否好? 有人可以提供建议吗?
非常感谢!
req
作为参数传递给所有需要它的函数。将其存储在全局变量中根本行不通,因为如果任何请求在处理过程中使用异步调用,则可以同时处理多个请求,并且这些多个请求将相互干扰,从而产生难以跟踪的错误。这里没有捷径。将当前请求作为参数传递给需要它的任何代码。 - jfriend00