【问题标题】:Sending multiple objects with node.js, mysql and socket.io使用 node.js、mysql 和 socket.io 发送多个对象
【发布时间】: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


【解决方案1】:

在 if else 块之后立即发出。您的发射代码在收到 mysql 回调之前正在执行。

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';

   //here 
});

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2013-10-26
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2022-12-02
    • 2012-06-11
    相关资源
    最近更新 更多