我想知道使用后应该在哪里释放连接,我已经看到了几个选项:
pool.getConnection(function(err, conn){
//conn.release() // should be placed here (1)?
conn.query(query, function(err, result){
//conn.release() // should be placed here (2)?
if(!err){
//conn.release() // should be placed here (3)?
}
else{
//conn.release() // should be placed here (4)?
}
//conn.release() // should be placed here (5)?
});
//conn.release() // should be placed here (6)?
});
或者也许应该发布错误和非错误情况?
最佳答案
正确的位置是#2 或#5。
您想在使用完毕后释放连接。
#6 是错误的,因为 query()
是异步的,因此它会在查询连接完成和回调触发之前立即返回。因此,您需要在完成连接之前释放连接。
#5 是正确的,因为回调已经触发,并且您已经完成了要用它做的所有事情。请注意,这假设您在此之前不使用 return
退出该函数。 (有些人在他们的 if (err)
block 中这样做。)
#2 也是正确的。如果您在回调中使用它,那么您不想在使用完毕之前释放它。
#3 和 #4 是不正确的,除非您同时使用它们。否则,您只是在某些情况下释放连接。
#1 不正确,因为您尚未使用该连接。
关于mysql - 使用后释放连接,Node.js 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295078/