我真的对在node-mysql中使用connection.end()感到困惑。
我不完全了解它的去向,目前我将其放在查询之后,但是如果我创建一个新查询,则会收到错误消息 Cannot enqueue Query after invoking quit.
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()
connection.end()
应该去哪里避免该错误?
根据文档:
使用end()关闭连接,以确保在将退出数据包发送到mysql服务器之前,执行所有剩余的查询。
connection.end()那么仅当您停止向MySQL发送查询时,即应用程序停止时,才调用。您不应该一直创建/结束连接:仅对所有查询使用相同的连接(或使用连接池以提高效率)。