尝试使用Node.jsdynamic设置页面循环

我试图做一些事情(我希望)很简单:从数据库接收JSON,并循环遍历Node.js创build所有必要的页面路由。 到目前为止,我只是使用存根数据,但是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中dynamic创build页面path的最简单的方法(最终我将绑定数据),但我可能是错的。

任何人都可以指出正确的方向吗? 我正在使用快速框架。

问题是closures中的key的值对于所有的路由(最后一次迭代中的值)是相同的。

这应该有助于解释如何在每个值中创build一个具有单独值的新闭包: 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为每个迭代在单独的闭包中保留一个不同的值。