mysql - 如何在 nodejs/socket.io 中的客户端请求后对 mysql 数据库进行查询?

标签 mysql node.js socket.io

我见过的所有示例都是先进行查询,然后向客户发送一些信息。

如果我先做一个查询,然后在它起作用的函数中使用结果:

client.query(
  ('SELECT * FROM '+TABLES_USERS),
  function(err, results, fields) {
var Users = (results);
  io.sockets.on('connection', function (socket) {
      socket.on('event1', function (data) {
          var requser = Users[data];
      socket.emit('event2', requser);
});
  });
    client.end();
  });

但现在我需要根据客户的要求进行查询。 我试过这样的事情,但查询不起作用:

io.sockets.on('connection', function (socket) {
 socket.on('event1', function (data) {
        console.log('query required'); /*works*/
        client.query(
          ('SELECT * FROM '+TABLES_USERS+' WHERE id_user ='+data),
          function(err, results, fields) {
              if (err) {throw err; /*doesn't work*/
                console.log('error'); /*doesn't work*/ }
                console.log('query is done'); /*doesn't work too. so i think query just doesn't work cuz there are no error and no results*/
                socket.emit('event2', results);
                client.end();
                    });

 });
});

最佳答案

在上面的例子中,有些事情你做得不好(在我看来):

1) 在客户端连接到 Socket.IO 后,您不要求登录,而是检查他的 session 是否包含可以验证他是否已连接的数据。

您应该阅读有关 Express, Socket.IO and sessions. 的文章,因为它详细解释了所有内容(如果您使用的是 Express)

2) 我认为 MongoDB、CouchDB 和其他可能的数据库比 MySQL 更适合实时应用程序。

关于mysql - 如何在 nodejs/socket.io 中的客户端请求后对 mysql 数据库进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458684/

相关文章:

MySQL:正则表达式和通配符

javascript - 函数内部的 stub 函数调用

mysql - 改进此 MySQL 查询 - 选择为子查询

javascript - sql 查询或 javascript 代码来计算数据库中的月数并将其乘以 laravel 中的总值

mysql - javascript中父级回调之前的多个嵌套回调函数

javascript - 在socket.io中激活localstorage

javascript - 页面可见性检测-不知道如何设置初始状态

javascript - 如何在客户端中获取 socket.io 客户端的 session ID

mysql - 如何附加从 case 语句中获得的数据

javascript - 使用nodejs在dynamodb中的列表中搜索