节点js代码中必须有多lessconnection.release()?

我使用节点js的Web服务我使用pool.getConnection()在我的代码,使用pool.getConnection()closures此连接我使用connection.release(); 但在任何查询我不使用任何函数进行closures连接。请告诉我这个代码是否有效?

 pool.getConnection(function(err,connection){ connection.release(); if(!err){ email=req.user.email connection.query('select * from users where email=?',[email], function(err,user_detail){ if(!err) { connection.query('insert into message(??,time,type,user_id) values(?,?,?,?)',[messagecolumns,dbValues,time,type,user_id], function(err,message_inserted){ if(!err) { console.log('Message send',message_inserted.insertId); connection.query('select u.firstname,u.lastname,u.img_path,m.* from users u, message m where u.id=m.user_id and m.id=?',[message_inserted.insertId], function(err,message_detail){ if(!err) { connection.query('select count(id) as message_count from message where appointment_request_id=?',[appointment_request_id], function(err,total_message){ if(!err) { connection.query('update appointment_request set message_count=? where appointment_request_id=?',[total_message[0].message_count,appointment_request_id], function(err,update_message_count){ if(!err) { } }); } else { console.log('connection Error',err); } 

我觉得这是不是有效的连接方法,因为从一些网站,我意识到,SQL查询后,我必须closures连接,但在这段代码中,我从来没有使用任何closures连接,我的代码有一段时间给我500服务器错误,一些时间工作成功,所以我必须解决这个错误,我想永久解决,如果任何人都可以帮助我,请给我这个解决scheme。 如果你有任何理解的理由,你可以问我。

池的连接数量有限( 默认值为10 )。

当你getConnection其中一个连接被从池中删除 ,并传递给你,以便你可以使用它。 完成connection.release() 后,您将调用connection.release() 。 一旦你调用connection.release() ,连接就被传回池中,并被代码的其他部分自由使用。 因此,在调用发布之后,使用这个连接是无效的,因为它可能会被代码的另一部分closures或者被另一个请求与getConnection连接的代码所使用(在大多数情况下,它仍然可以工作,但它可能会意外失败)。

在你的代码中你可以调用connection.release(); 在你callback的开始,所以在该release之后connection的使用是无效的。

您不能在同一个连接上多次调用connection.release()