我正在尝试做一些事情(我希望)很简单:从数据库接收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中动态创建页面路由的最简单方法(最终我将数据绑定到),但我可能错了。
有人能指出正确的方向吗?我正在使用快速框架。
答案 0 :(得分: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
在单独的闭包中为每次迭代保留不同的值。