【发布时间】:2016-10-07 16:59:04
【问题描述】:
我需要帮助,我真的无法解决这个问题。
我有这个网站使用Node.js 调用mySQL 查询并将它们显示为表格,每个表格都在它自己的页面中。为此,我创建了 4 个对象,包括名称、标题和查询。当我将这段代码运行四次(从queryPage[0] 到queryPage[3])时,它工作得很好。但我想把它放到一个 for 循环中,这样我就不需要 4 次重复相同的行,但是它不起作用。页面无法加载...知道发生了什么吗?
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
});
});
});
【问题讨论】:
-
您的代码是如何工作的?是否处于工作状态?
-
如果我理解正确,当您启动您的应用程序时,您会从 db 获取每个页面的数据并为其设置路由,然后当请求进入您为行提供服务的路由之一时。这意味着如果您更改数据库中的数据,您仍然会在所有页面上获得旧数据。那是对的吗?我的意思是大多数人会在请求到来时查询 db,以便您获得最新数据。
-
这很有趣,我没想到。谢谢你。然而,这不是我的问题。我只是想了解为什么这段代码在我写 4 次而不是在 for 循环中时有效
-
由于我看不到您的 for 循环,因此很难说出问题所在,但很可能其中一条路线应该有效。如果您使用 queryPage[i],原因是在 for 循环中,那么您将创建 4 次路由,其名称为最后一页 queryPage[3].name,这是由于 node.js 的异步特性
-
你知道,这正是发生的事情!最后一个总是有效的。有没有其他方法可以循环路由?