[英]Dynamic routes from database in older version of node
我正在使用Node.js v〜4。
我正在嘗試通過使用數據庫中的對象來構建路由。 這是我的邏輯:
for (page of pages) {
app.get(`/${page.path}`, (req, res)=> {
res.render('test', {
page:page,
})
})
}
但是,無論我訪問哪個url,我總是從數據庫中的最后一個對象獲取內容。
因此url可以工作,但是app.get()
回調函數中的代碼無法正常工作。 例如page
變量無效,顯示最后一個對象,而不是一個匹配路徑。 如果我要添加以下代碼:
console.log(req.url);
console.log(page.path);
作為回調函數中的第一行,我將獲得下一個輸出:
到達第一個網址:
/test01
test03
到達第二個網址:
/test02
test03
動態路由和頁面是否有更方便的方法?
您需要在要迭代的變量上使用
let
來保留作用域-否則它將始終將路由綁定到要迭代的最后一個項目:
由於節點中不支持let
,因此請使用IIFE:
for (page of pages) {
(function(p) {
app.get(`/${p.path}`, (req, res)=> {
res.render('test', {
page:p,
})
})
})(page)
}
這對我有用:
router.get('/:page', function (req, res) {
var page = req.params.page;
if (pages.indexOf(page) === -1) res.redirect('/');
else res.render('index', {title: page});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.