req.locals против res.locals против res.data против req.data против app.locals в промежуточном программном обеспечении Express
Есть несколько похожих вопросов, но мой вопрос состоит в том, что, если я хочу распространять промежуточные результаты, которые я получаю вместе с другим промежуточным программным обеспечением маршрутизации, каков наилучший способ сделать это?
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. Кроме того, представляется, что оба объекта запроса и ответа имеют локальные свойства, инициализированные пустым объектом в начале запроса.
Также можно установить свойства res.mydata или req.mydata?
Теоретически, app.locals также может использоваться для передачи этих данных через другое промежуточное ПО, так как оно будет сохраняться в промежуточном ПО, но это будет противоречить обычному использованию app.locals. Это используется больше для специфических данных приложения. Также необходимо очистить эти данные в конце цикла запрос-ответ, чтобы те же самые переменные могли использоваться для следующего запроса.
Каков оптимальный и стандартный способ распространения промежуточных результатов через промежуточное ПО?