ルートを動的に作成する Express.js を使用してシンプルな CMS を作成しようとしています。次のようなデータベースから 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]);
});
});
現在、すべてが正常に機能しています。しかし問題は、ユーザーがコンテンツとパスを変更するたびに、ノード アプリ全体を再起動する必要があることです。ルートを削除するための API 呼び出しが見つかりませんでした。
app.get で設定された古いルートを安全に削除する方法はありますか? 私もそれをする必要がありますか?
この種のルーティングを行うためのより良い方法はありますか? 組み込み関数を使用でき、高速で、正規表現をサポートしているため、この方法が気に入っています。
app.routes = nul で app.routes 全体を削除しようとしましたが、何もしませんでした。古いルートがまだ残っていました。
それらを実際に削除したことの1つは、
delete app._router.map.get;
app._router.map.get = [];
しかし、これは実際にそれらを削除し、安全に使用できるので、ルーターが再配置され続けた場合に大量の RAM をハイジャックすることはありませんか?