将db-query-result发送到客户端

时间:2015-03-09 14:37:29

标签: node.js socket.io node-mysql asynccallback

尝试将node-mysql数据库查询的结果发送到客户端。

代码:

io.on('connection', function(socket){
    socket.on('admin', function() {
        [...]
        locations = getUserInfo(function(e,c){...});
        [...]
    });
});

function getUserInfo(callback) {
    var json = '';
    connection.query('SELECT * from locations WHERE loc_id = 1', function(err, results, fields) {
        if(err)
           return callback(err, null);

        console.log('The query-result is: ', results[0]);

        json = JSON.stringify(results);

        console.log('JSON-result: ', json);
        callback(null, json);
    });
};

getUserInfo(function(e,c){
    console.log(c);
});

这是按预期工作的。

但我不想将它写入控制台,而是将其发送到客户端(使用socket.io)。我怎样才能做到这一点?我的所有尝试都以 undefined 结束。

1 个答案:

答案 0 :(得分:0)

您可能正在发送locations对象,这始终是未定义的。尝试:

io.on('connection', function(socket){
  socket.on('admin', function() {
      getUserInfo(function(e,c){
        if(!e){
            socket.emit('locations', c);
        }
      });
  });
});