Mit der Lösung von Robert vorgeschlagen, sich bewusst sein, dass, wann immer Sie lesen von req.query
, müssen Sie Lowcased-Schlüssel verwenden. Dies macht zukünftige Ergänzungen zu Ihrem API-Fehler anfällig. Hier
ist eine Alternative Stück Middleware, ein Proxy object mit dem Verhalten von req.query[...]
, so zu modifizieren, dass Lookups Fall ist unempfindlich:
app.use((req, res, next) => {
req.query = new Proxy(req.query, {
get: (target, name) => target[Object.keys(target)
.find(key => key.toLowerCase() === name.toLowerCase())]
})
next();
});
Neben weniger fehleranfällig zu sein, ist dieser Ansatz auch die Blätter req.query
intakt Aufzählungsoperationen, bei denen die ursprüngliche Lösung möglicherweise doppelte Schlüssel/Wert-Paare erstellt.
Danke! Wenn man aus dem IIS kommt, fühlt sich das komisch an, dass eine solche Grundvoraussetzung übersehen wird. – SamSerious
Vielleicht in der IIS-Welt, die Verwendung von Abfrage-Parameter mit Mixen Fall häufiger als anderswo :) Ich habe immer Kleinbuchstaben Parameter selbst verwendet. – robertklep
Was ist, wenn ein Benutzer Abfrageparameter mit gemischten Fällen eingibt? :) – SamSerious