Я пытаюсь создать простую CMS с express.js, которая динамически создает маршруты. Он получает JSON из базы данных, которая выглядит так:
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'}
}
}
и итерации по объектам, создающим такие маршруты:
Object.keys(pagesfromdb).forEach(function(key) {
var page = pagesfromdb[key];
app.get(page.global.paths,function(req, res){
res.render(page.render, page[language]);
});
});
Теперь все работает нормально. Но проблема заключается в том, что каждый раз, когда пользователь изменяет содержимое и пути, все приложение node необходимо перезапустить. Я не нашел никаких вызовов API для удаления маршрутов.
Есть ли способ безопасно удалить старые маршруты, установленные с app.get? Должен ли я это сделать?
Есть ли лучший способ сделать такую маршрутизацию? Мне нравится этот метод, так как он позволяет мне использовать встроенную функцию, быстро и поддерживает регулярное выражение.
Я попытался удалить все app.routes с помощью app.routes = nul, но ничего не сделал, старые маршруты все еще были на месте.
Одна вещь, которая действительно удалила их, была
delete app._router.map.get;
app._router.map.get = [];
Но действительно ли это удаляет их, и безопасно ли это использовать, поэтому я не могу захватить огромное количество бара, если маршрутизатор продолжает переполняться?