В миналото можеше да направиш нещо подобно:
app.get(["/", "/dashboard"], (req, res, next) => { ... });
за да има няколко маршрута, използвайки един и същ манипулатор на маршрути.
Няколко отговора на препълване на стек показват, че това поведение е оттеглено и не трябва да се използва повече.
Освен грозен регекс или полу-хак, като поставянето на функцията в променлива и предаването й на 2 различни app.get()
призовава, има ли елегантна алтернатива на просто преминаването на масив като първи аргумент?
Отговори:
1 за отговор № 1Направете нещо подобно:
var express = require("express");
var app = express();
var originalExpressGet = app.get;
app.get = (function() {
var expressApp = app;
function turnToArray(args){
var array = [];
for(var i = 0; i < args.length; i++){
array.push(args[i]);
}
return array;
}
return function(routes, callback) {
var args = turnToArray(arguments);
if(args.length <= 1){
return originalExpressGet.apply(app, arguments);
}
if(!Array.isArray(routes)){
routes = [routes];
}
args.shift();
routes.forEach(function(route){
originalExpressGet.apply(app, [route].concat(args));
});
}
return app;
}());
По този начин все още използвате Express "s app.get, но той ви позволява да използвате [] за множество маршрути. Например, това работи:
app.get(["/", "/same"], function(req, res){
res.send(true);
});
Така прави и това:
app.get("/another route", function(req, res){
res.send(true);
});