Beste Methode zum dynamischen Routing mit Express.js (node.js)
Ich versuche mit express.js ein einfaches CMS zu erstellen, das dynamisch Routen erstellt. Es wird ein JSON aus einer Datenbank abgerufen, die folgendermaßen aussieht:
pagesfromdb = {
home = {
paths = ['/','/home','/koti'],
render = 'home.ejs',
fi_FI = {html='<h1>Hei maailma!</h1>'},
en_US = {html='<h1>Hello World!</h1>'}
},
about = {
paths = ['/about','/tietoja'],
render = 'general.ejs',
fi_FI = {html='Tietoja'},
en_US = {html='About Us'}
}
}
und iteriert über die Objekte und erstellt Routen wie folgt:
Object.keys(pagesfromdb).forEach(function(key) {
var page = pagesfromdb[key];
app.get(page.global.paths,function(req, res){
res.render(page.render, page[language]);
});
});
Jetzt funktioniert alles gut. Das Problem ist jedoch, dass jedes Mal, wenn ein Benutzer den Inhalt und die Pfade ändert, die gesamte Node-App neu gestartet werden muss. Ich habe keine API-Aufrufe zum Entfernen von Routen gefunden.
Gibt es eine Möglichkeit, die mit app.get festgelegten alten Routen sicher zu entfernen? Sollte ich das überhaupt tun?
Gibt es einen besseren Weg, um diese Art von Routing durchzuführen? Ich mag diese Methode, da sie mir erlaubt, die eingebaute Funktion zu verwenden, schnell ist und Regex unterstützt.
Ich habe versucht, die gesamten app.routes mit app.routes = nul zu entfernen, aber es hat nichts getan, die alten Routen waren noch vorhanden.
Eine Sache, die sie tatsächlich entfernte, war
delete app._router.map.get;
app._router.map.get = [];
Aber werden sie dadurch tatsächlich entfernt, und ist die Verwendung sicher, damit ich nicht große Mengen an RAM entführe, wenn der Router immer wieder neu bevölkert wird?