2017-04-02 8 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

なぜダウン投票? strange –

+0

あなたの 'i'変数は、実際に実行されるルートハンドラで間違っています。 'for(let i = 0; i <9; i ++)'を使うと、 'for'ループの' let'がループの呼び出しごとに別々の '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

ユーザーが/最初のエンドポイントを要求すると、articles0がレンダリングされます。 articlelistの最初の要素として '' this-is-my-article-routes''を格納し、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あなたの返信ありがとう、私はそれを更新しました –

関連する問題