最佳答案
有一些类似的问题,但我的问题是,如果我想传播中间结果,我沿着不同的路由中间件,什么是最好的方式做到这一点?
app.use(f1); app.use(f2); app.use(f3);
function f1(req,res,next) {
//some database queries are executed and I get results, say x1
res.locals.dbResults = {...};
next();
}
function f2(req,res,next) {
// more processing based upon req.locals.dbResults
res.locals.moreResults = {....};
next();
}
// ...
我认为我可以通过使用 请求.local 在不同的中间件中获得相同的数据传播。此外,请求和响应对象似乎都具有在请求开始时初始化为空对象的局部变量属性。
还可以设置 res.mydata 或 req.mydata 属性?
从理论上讲,app.local 也可以用来通过不同的中间件传递这些数据,因为它将持久存在于中间件之间,但是这与使用 app.local 的传统做法相反。它更多地用于应用程序特定的数据。还有必要在请求-响应周期结束时清除这些数据,以便下一个请求可以使用相同的变量。
通过中间件传播中间结果的最佳和标准方法是什么?