Ich schreibe eine Express-Anwendung, die ich mit der AirBnB eslint configuration linting bin. Diese Konfiguration bietet eine no-params-reassign
Prüfung, die die Neuzuordnung von Parametern und Mitgliedern dieser Parameter als Fehler kennzeichnet. Ich persönlich mag das, aber ich bin mir nicht sicher, ob es eine Möglichkeit gibt, req
und res
in Express zu ändern, ohne die Funktionsparameter zu verändern.Ändern Res ohne muting Argument
Zum Beispiel möchte ich einen Teil der Anforderung in einer Middleware neu zu schreiben:
app.use((req, res, next) => {
req.url = req.url.replace("regex", "replacement");
});
Dies setzt einen Fussel Fehler aus. Ich weiß, ich kann der Fehler diese weggehen, indem Sie:
app.use((_req, res, next) => {
req = _req;
req.url = req.url.replace("regex", "replacement");
});
... aber das scheint ein bisschen dumm Lösung. Gibt es eine Möglichkeit, die req
und res
Variablen für zukünftige Middleware-Aufrufe in Express zu ersetzen, oder ist die einzige Möglichkeit, Änderungen zu erhalten, um sie tatsächlich zu mutieren?
Ich weiß, ich kann nur die no-params-reassign
Regel außer Kraft setzen, aber ich wollte sehen, ob es für mich möglich ist, dies zu erreichen, ohne dies zu tun. Vielen Dank!
Kurze Antwort? Ja, die allgemeine Regel besteht darin, 'req' und' res' zu ändern, wenn sie von Ihrer Middleware verwendet werden. Der offizielle Guide schlägt sogar vor, es so zu machen (http://expressjs.com/en/guide/writing-middleware.html). Es mag einen Weg geben, aber ich habe noch nie einen gesehen. Ist 'req.replacedUrl = req.url.replace (" regex "," ersatz ");' make 'eslint' warning? – dvlsg
Ja - das Dogma ist, die Parameter nicht zu mutieren. Guess Express ist möglicherweise damit nicht kompatibel? –
Ich könnte definitiv falsch sein, aber es scheint der empfohlene Weg, um es mit Express zu tun. Und die meisten Nodejs http/Server-Bibliotheken, die Wahrheit gesagt werden. Ich denke, die Idee ist, dass Middleware typischerweise verwendet wird, um die Request/Response-Objekte mit den benötigten Teilen zu "erweitern". Wohl oder übel. – dvlsg