使用后释放连接,连接池Node.js

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)

或者也许应该同时发布错误和非错误情况?

Tro*_*ott 5

正确的位置是#2 或#5。

您想在使用完毕后释放连接。

#6 是错误的,因为它query()是异步的,所以它会在连接完成查询之前和回调触发之前立即返回。因此,您将在完成连接之前释放连接。

#5 是正确的,因为回调已经触发,并且你已经完成了你将要做的所有事情。请注意,这假定您在此return之前不使用退出函数。(有些人在他们的if (err)街区这样做。)

如果您不在回调内的任何地方使用连接,#2 也是正确的。如果您在回调使用它,那么您不想在使用完成之前释放它。

#3,#4,除非你使用的是不正确的两个人。否则,您只会在某些情况下释放连接。

#1 是不正确的,因为您还没有使用过连接。