【发布时间】:2015-04-18 14:57:35
【问题描述】:
我正在使用 node.js、mysql 和 socket.io,我想从我的 mysql 数据库中获取大量数据。它将是一组具有 xy 位置坐标的恒星。我可以逐行获取数据,如 row var 所示,它正确记录到 node.js 控制台。我还可以通过发射线将标准消息返回给客户端。但是我不能向客户端发送星型数据,如果我每次尝试使用数组来存储行变量,它只会返回一个空白数组。
function starUpdate(sessionid){
var query = "SELECT * FROM stars";
var conn = mysql.createConnection({
host : 'localhost',
user : 'dbuser',
password : 'dbpass',
database : 'dbname'
});
//console.log("Running query: " + query);
conn.query(query, function(err, rows, fields) {
if (!err)
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
console.log(row);
}
else
result = 'error';
});
conn.end();
console.log("Star data: " + result);
//server.to(sessionid).emit("starupdate",result);
}
当我向控制台单独输出“行”时,我得到了这个:
{ star_id: 1,
star_type: 1,
star_x: 200,
star_y: 200,
star_alpha: 1,
star_status: 1 }
{ star_id: 2,
star_type: 2,
star_x: 200,
star_y: 250,
star_alpha: 1,
star_status: 1 }
{ star_id: 3,
star_type: 3,
star_x: 200,
star_y: 300,
star_alpha: 1,
star_status: 1 }
如何设置结果变量并将行输入其中,以便我的发射线传输所有要在客户端处理的数据?
【问题讨论】:
-
在 if else 块之后立即发出。您的发射代码在收到 mysql 回调之前正在执行。
-
经过测试并且工作正常!谢谢!
-
我将其发布为 anwser。
标签: javascript mysql node.js sockets