/ / Каква е замяната за предаване на масив към първия аргумент на app.get ()? - javascript, node.js, express

Какво е замяната за предаването на масив на първия аргумент на app.get ()? - javascript, node.js, изрично

В миналото можеше да направиш нещо подобно:

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);
});