Es gibt einige ähnliche Fragen gestellt, aber meine Frage ist, dass, wenn ich Zwischenergebnisse, die ich bekommen propagieren möchte entlang der verschiedenen Routing-Middleware, was ist der beste Weg, das zu tun?req.locals im Vergleich zu res.locals im Vergleich zu res.data im Vergleich zu req.data im Vergleich zu app.locals in Express-Middleware
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();
}
// ...
Ich denke, dass ich die gleiche Ausbreitung von Daten durch die verschiedenen Middleware unter Verwendung erf .locals zu bekommen. Es scheint auch so zu sein, dass bei den Anfrage- und Antwortobjekten die Locals-Eigenschaften zu Beginn der Anfrage auf ein leeres Objekt initialisiert wurden.
Auch kann man res.mydata oder req.mydata Eigenschaften auch einstellen?
Theoretisch können app.locals auch verwendet werden, um diese Daten durch die verschiedenen Middleware weiterzuleiten, da sie in den Middlewares bestehen bleiben, aber das wäre im Gegensatz zur herkömmlichen Verwendung von app.locals. Es wird mehr für anwendungsspezifische Daten verwendet. Es wird auch erforderlich sein, diese Daten am Ende des Anfrage-Antwort-Zyklus zu löschen, damit die gleichen Variablen für die nächste Anfrage verwendet werden können.
Was ist der optimale und standardmäßige Weg, um Zwischenergebnisse über Middleware zu verbreiten?
Danke für die Klärung der Unterscheidung der Dokumentation, die für res.locals funktioniert. Sie haben mir bestätigt, dass theoretisch alle Ansätze technisch gleich sind. Lasst uns auf weitere Kommentare warten. Upvoted Ihre Antwort ... sicherlich nützlich. – Sam