2016-10-07 5 views
0

私はこれに助けが必要ですが、私は本当にこの問題を解決できません。 私はNode.jsを使ってこのウェブサイトを訪問し、mySQLのクエリを呼び出し、それをそれぞれのページにテーブルとして表示します。これを行うために、名前、タイトル、およびクエリを含む4つのオブジェクトを作成しました。私がこのコードを4回(queryPage[0]からqueryPage[3]に)持っているとき、それは素晴らしい作品です。しかし、私はそれをforループに入れたいので、同じ行を4回繰り返す必要はありませんが、それはうまくいきません。ページはロードされません...何が起こっているか考えていますか?はforループでexpress.jsにデータを送信します

connection.query(queryPage[0].query, function(err, rows) { 
    var arr = []; 
    for (var i in rows) { 
    arr[i] = rows[i]; 
    } 
    app.get('/' + queryPage[0].name, function(req, res) { 
    res.render('pages/' + queryPage[0].name, { 
     title: queryPage[0].title, 
     data: arr 
    }); 
    }); 
}); 
+0

ハウズあなたのコードの作業のようなものが必要だと思いますか?それは働いている状態ですか? – abdulbarik

+0

私が正しく理解していれば、アプリケーションを起動するときにdbから各ページのデータを取得し、行を設定してから、行を提供しているルートの1つがリクエストを受け取ったときにそのデータの経路を設定します。つまり、db内のデータを変更すると、すべてのページで古いデータが取得されます。あれは正しいですか?あなたが最新のデータを入手できるように、リクエストが来たときにほとんどの人がdbにクエリを行うことを意味します。 – Molda

+0

それは私がそれを考えなかったのは面白いです。ありがとうございました。しかし、それは私の問題ではありません。私は、なぜこのコードが4回書くのではなく、forループではないのか理解しようとしています – user3187759

答えて

0

は、私はあなたがより多くのこの

var queryPage = [ ... ]; 
// This route catches all request 
app.get('/:name', function (req, res, next) { 
    // :name = req.params.name 

    var page; 
    for(var i = 0, l = queryPage.length; i < l; i++) 
     if(queryPage[i].name === req.params.name) { 
      page = queryPage[i]; 
      break; 
     } 

    // Check the page exists 
    if(!page) return res.status(404).send('Not found'); 
    // if(!page) return next(); 

    connection.query(page.query, function(err, rows) { 
     res.render('pages/' + page.name , { 
      title: page.title, 
      data: rows 
     }); 
    }); 
}); 
+0

たぶん私は知識が不足しているかもしれませんが、私は '' /:name ''が使われていることを理解していません。私はあなたのやり方はうまくいくと思いますが、私は自分のコードに設定する方法がわかりません... – user3187759

+0

アドレスがexample.com/somethingの場合、nameは* something *なのでreq.params.nameは* something * – Molda

関連する問題