Wenn ich versuche, das unten zu erklären, funktioniert die Indexseite, aber die anderen Seiten alle 404. Ich weiß, dass es kein Problem mit meiner links.js-Datei ist, da, wenn ich die Ausgabe der for-Schleife fest codiere Arbeit. Ich console.logged das Router-Objekt und es zeigt die Informationen im Stapel. Aber wenn ich versuche, einen der Links zu öffnen, 404, und nichts wird in der Konsole protokolliert.Können Routen in Express mit einer Schleife deklariert werden?
Ist es nicht möglich, Routen mit einer for-Schleife zu deklarieren? Der Code wird kopiert.
var express = require('express');
var router = express.Router();
var config = require('../models/config.js');
var links = require('../models/links.js');
// homepage
router.get('/', function(req, res, next) {
res.render('index', { title: config.title });
});
for (var i = 0; i < links.length; i++) {
router.get(links[i].regex, function(req, res, next) {
console.log("trying to open " + links[i].url);
res.render(links[i].url, { title: links[i].title, link: links[i] });
});
}
module.exports = router;
'foreach()' und 'for'-Schleife ist verschieden, wie ich in meiner Antwort zur Kenntnis genommen. Wenn Ihre Route-Handler aufgerufen würden, würden Sie den Unterschied in der Ausgabe sehen. Wie auch immer, wenn Ihre Route-Handler nicht aufgerufen werden, sollten Sie Ihre '.regex'-Werte (doppelt) überprüfen. – mscdex