shm*_*nsw 2 mysql node.js express
我想知道使用它后应该在哪里释放连接,我已经看到了几个选项:
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)?
});
Run Code Online (Sandbox Code Playgroud)
或者也许应该同时发布错误和非错误情况?
正确的位置是#2 或#5。
您想在使用完毕后释放连接。
#6 是错误的,因为它query()是异步的,所以它会在连接完成查询之前和回调触发之前立即返回。因此,您将在完成连接之前释放连接。
#5 是正确的,因为回调已经触发,并且你已经完成了你将要做的所有事情。请注意,这假定您在此return之前不使用退出函数。(有些人在他们的if (err)街区这样做。)
如果您不在回调内的任何地方使用连接,#2 也是正确的。如果您在回调中使用它,那么您不想在使用完成之前释放它。
#3,#4,除非你使用的是不正确的两个人。否则,您只会在某些情况下释放连接。
#1 是不正确的,因为您还没有使用过连接。