尝试使用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
为每个迭代在单独的闭包中保留一个不同的值。