我现在觉得有点傻。我对nodejs和javaScript相当陌生,无法弄清楚这一点。我想这是因为对 mysql 的查询的异步性质......
我做了一个例子来说明我的问题。我只想循环处理一些 sql 查询并对结果进行处理。为了这个例子,我只是打印出一些东西。我知道我可以使用这样的单个 sql 查询,"SELECT id, name FROM player WHERE id IN (1,2,3,4,5)"
但这在我尝试编写的实际应用程序中是不可能的。
这是我的 nodejs app.js 的相关部分
var mysql = require("mysql");
var mysqlPool = mysql.createPool(conf.mysqlArbData);
for (var i = 0; i<5; i++){
mysqlPool.getConnection(function(err, connection) {
var detailSql = "SELECT id, name FROM player " +
"WHERE id = "+i;
if (err){
throw err;
}
connection.query(detailSql, function(err, detailRows, fields) {
connection.end();
console.log("detailSql="+detailSql);
if (err){
console.log("can't run query=" + detailSql +"\n Error="+err);
}
else{
console.log(detailRows[0].id + " " +detailRows[0].name);
}
});
});
};
现在输出:
web server listening on port 3000 in development mode
detailSql=SELECT id, name FROM player WHERE id = 5
5 Jyvaskyla
detailSql=SELECT id, name FROM player WHERE id = 5
5 Jyvaskyla
detailSql=SELECT id, name FROM player WHERE id = 5
5 Jyvaskyla
detailSql=SELECT id, name FROM player WHERE id = 5
5 Jyvaskyla
detailSql=SELECT id, name FROM player WHERE id = 5
5 Jyvaskyla
我的问题是,为什么我只得到 id=5 的数据库条目的结果?为了在回调中接收每个单独的结果,需要更改什么?