2

データベースから JSON を受け取り、それをループ処理して Node.js に必要なすべてのページ ルートを作成します。今のところ、私はスタブ化されたデータを使用していますが、console.log にはキーと値のペアの最後の値「contact」が常に表示されています。最初のコンソールには、すべてが正しく表示されます。

これが私のコードです:

routes = {
"Home" : "index.html",
"about" : "about.html",
"How it Works" : "how_it_works.html",
"contribute" : "contribute.html",
"contact" : "contact.html"
};

function routesGetandSet(data) {
  for (key in data) {
    console.log(key + "---" + '/' + data[key]);
    app.get('/' + data[key], function(req, res) {
      console.log(data[key]);
    });
  }
}

routesGetandSet(routes);

Node でページ ルートを動的に作成するには、これが最も簡単な方法だと思いました (最終的にはデータを結び付けます) が、間違っている可能性があります。

誰かが私に正しい方向を向けることができますか? 私はエクスプレスフレームワークを使用しています。

4

1 に答える 1

1

問題はkey、クロージャーの値がすべてのルートで同じであることです (最後の反復の値)。

これは、それぞれに個別の値を持つ新しいクロージャを作成する方法を説明するのに役立ちます: http://www.mennovanslooten.nl/blog/post/62

このようなものが役立つはずです:

for (key in data) {
  console.log(key + "---" + '/' + data[key]);
  (function(key1) {
    app.get('/' + data[key1], function(req, res) {
       console.log(data[key1]);
    });
   }
  )(key);
}

上記のコードでkey1は、反復ごとに異なる値を個別のクロージャーに保持します。

于 2013-02-27T23:04:31.250 に答える