2017-04-02 40 views
0

我有一堆靜態文件,它們被命名爲article1,article2等。所以我知道它在我的工作動態渲染在快速使用循環將不起作用

app.get('/this-is-my-article-routes', (req, res) => { 
     res.render('article1'); 
}); 

但它太繁瑣,並有很多重複的代碼。我嘗試過,但它不起作用?

const articleArr = [ 
    'this-is-my-article-routes' 
]; 

for (i = 0; i<9; i++) { 
    app.get(`/${articleArr[i]}`, (req, res) => { 
     res.render(`article${i}`); 
    }); 
} 

這甚至有可能嗎?或者我的代碼有問題?

+0

爲什麼下降投票?奇怪的 –

+0

你的''''變量在路線處理程序實際運行時會出錯。如果你使用'for(let i = 0; i jfriend00

回答

0

您的數組articleArr是否包含10個元素?

我認爲,更好的方式來做到這一點是:

var articleList = [ 'first', 'second', 'third'] 
app.get('/:article', (req, res) { 
    var articleName = req.params.article 
    var index  = articleList.indexOf(articleName) 
    if (index == -1) { 
     // No Aricle Found 
    } 
    res.render(`articles$(index)`) 
}) 

此代碼也將正常工作,但它不是一個推薦。

var articleList = ['first', 'second'] 
articleList.forEach(function(value){ 
    app.get('/'+value, (req, res) => { 
     res.status(200).json({ 
      value: value 
     }) 
    }) 
}) 
+0

是的。但是什麼是:文章?標題不應該是文件名。 –

+0

如果用戶將請求/第一端點,您將呈現文章0。您可以將'this-is-my-article-routes''作爲articleList中的第一個元素存儲並呈現articles0。 – Tolsee

1
how about simple solution using query params 
app.get('articleArr/:id', (req, res) => { 
     res.render('article/'+req.params.id); 
    }); 
+0

這個概念很好,但傳遞給'res.render()'的參數是錯誤的。你需要構造一個字符串。 – jfriend00

+0

@ jfriend00感謝您的回覆,我更新了它 –