如何对mysql数据库执行查询在nodejs / 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之后,您不要求login,而是检查他的会话是否包含可以validation他是否连接的数据。

您应该阅读关于Express,Socket.IO和会话的文章。 ,因为它详细解释了一切(如果您使用Express)

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

我已经通过使用node-mysql-libmysqlclient而不是node-mysql解决了这个问题。 但是如果有人知道在node-mysql的客户请求之后做一个查询的方法,请告诉我))