Najlepszy sposób na rutowanie dynamiczne z Express.js (node.js)
Próbuję utworzyć prosty CMS z express.js, który dynamicznie tworzy trasy. Pobiera JSON z bazy danych, która wygląda tak:
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'}
}
}
i iteruje po obiektach tworzących takie trasy:
Object.keys(pagesfromdb).forEach(function(key) {
var page = pagesfromdb[key];
app.get(page.global.paths,function(req, res){
res.render(page.render, page[language]);
});
});
Teraz wszystko działa dobrze. Ale problem polega na tym, że za każdym razem, gdy użytkownik modyfikuje zawartość i ścieżki, cała aplikacja węzła musi zostać ponownie uruchomiona. Nie znalazłem żadnych wywołań API do usunięcia tras.
Czy jest jakiś sposób, aby bezpiecznie usunąć stare trasy ustawione w app.get? Czy powinienem to zrobić?
Czy jest lepszy sposób na robienie tego rodzaju routingu? Lubię tę metodę, ponieważ pozwala mi korzystać z wbudowanej funkcji, jest szybka i obsługuje wyrażenia regularne.
Próbowałem usunąć całą app.routes z app.routes = nul, ale nic nie zrobił, stare trasy były nadal na miejscu.
Jedną rzeczą, która rzeczywiście je usunęła, była
delete app._router.map.get;
app._router.map.get = [];
Ale czy to faktycznie je usuwa i czy korzystanie z nich jest bezpieczne, więc nie przejmuję ogromnych ilości pamięci RAM, jeśli router jest ponownie zaludniany?