req.locals vs. res.locals vs. res.data vs. req.data vs. app.locals no middleware Express
Existem algumas perguntas semelhantes, mas minha pergunta é que, se eu quiser propagar resultados intermediários, eu entendo os diferentes middlewares de roteamento, qual é a melhor maneira de fazer isso?
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();
}
// ...
Eu acho que posso obter a mesma propagação de dados através do middleware diferente usandoreq.locais. Além disso, parece que os objetos de solicitação e resposta possuem as propriedades locais localizadas em um objeto vazio no início da solicitação.
Além disso, também é possível definir propriedades res.mydata ou req.mydata?
Em teoria, o app.locals também pode ser usado para transmitir esses dados pelos diferentes middlewares, pois eles persistirão nos middlewares, mas isso seria contrário ao uso convencional do app.locals. É usado mais para dados específicos do aplicativo. Também será necessário limpar esses dados no final do ciclo de solicitação-resposta para que as mesmas variáveis possam ser usadas para a próxima solicitação.
Qual é a maneira ideal e padrão de propagar resultados intermediários por meio de middleware?