一尘不染

node-mysql connection.end()去哪里

node.js

我真的对在node-mysql中使用connection.end()感到困惑。

我不完全了解它的去向,目前我将其放在查询之后,但是如果我创建一个新查询,则会收到错误消息 Cannot enqueue Query after invoking quit.

现在我的应用有很多支票,其中一张是:

   socket.on('connect', function(data,callBack){
       var session = sanitize(data['session']).escape();

       var query = connection.query('SELECT uid FROM sessions WHERE id = ?', [session],
           function(err,results){
           if(err){ 
                  console.log('Oh No! '+err);                   
              }else{
                  io.sockets.socket(socket.id).emit('connectConfirm',{data : true});
              }
              connection.end();
           });
   });

现在在那之后,如果我有任何其他查询,我会发生错误。

我在jsFiddle中做了一个更详尽的解释: http :
//jsfiddle.net/K2FBk/ 以更好地解释我遇到的问题。node-
mysql的文档并未完全说明放置的正确位置connection.end()

应该去哪里避免该错误?


阅读 549

收藏
2020-07-07

共1个答案

一尘不染

根据文档

使用end()关闭连接,以确保在将退出数据包发送到mysql服务器之前,执行所有剩余的查询。

connection.end()那么仅当您停止向MySQL发送查询时,即应用程序停止时,才调用。您不应该一直创建/结束连接:仅对所有查询使用相同的连接(或使用连接池以提高效率)。

2020-07-07