req.locals frente a res.locals frente a res.data frente a req.data frente a app.locals en Express middleware

Se hacen algunas preguntas similares, pero mi pregunta es que si quiero propagar resultados intermedios me llevo bien con los diferentes middleware de enrutamiento, ¿cuál es la mejor manera de hacerlo?

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();
}
// ...

Creo que puedo obtener la misma propagación de datos a través de los diferentes middleware usandoreq.locales. Además, parece que los objetos de solicitud y respuesta tienen las propiedades locales inicializadas en un objeto vacío al comienzo de la solicitud.

Además, ¿también se pueden establecer las propiedades res.mydata o req.mydata?

En teoría, app.locals también se puede usar para pasar estos datos a través de los diferentes middleware, ya que persistirán en middlewares, pero eso sería contrario al uso convencional de app.locals. Se usa más para datos específicos de la aplicación. También será necesario borrar esos datos al final del ciclo de solicitud-respuesta para que se puedan usar las mismas variables para la próxima solicitud.

¿Cuál es la forma óptima y estándar de propagar resultados intermedios a través de middleware?

Respuestas a la pregunta(1)

Su respuesta a la pregunta