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. Это используется больше для специфических данных приложения. Также необходимо очистить эти данные в конце цикла запрос-ответ, чтобы те же самые переменные могли использоваться для следующего запроса.

Каков оптимальный и стандартный способ распространения промежуточных результатов через промежуточное ПО?

Ответы на вопрос(1)

Ваш ответ на вопрос