有一些类似的问题,但我的问题是如果我想传播我在不同路由中间件中获得的中间结果,最好的方法是什么?
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();
}
// ...
我认为可以使用req.locals在不同的中间件之间获得相同的数据传播。此外,请求和响应对象都将locals属性初始化为空对象在请求开始时。
另外,人们也可以设置res.mydata或req.mydata属性吗?
理论上,app.locals也可以用于通过不同的中间件传递此数据,因为它会跨中间件保持持续性,但这与app.locals的常规用法相反。它更多用于特定于应用程序的数据。还需要在请求响应周期结束时清除该数据,以便可以在下一个请求中使用相同的变量。
什么是通过中间件传播中间结果的最佳和标准方式?