NodeJS MySQL - How to know connection is release o

2020-06-09 09:25发布

I am developing NodeJS + MySQL web API.

I am using mysql npm module.

I want know connection is release or not is there any function or variable. Like

if(!connection.isRelease() OR !connection.isClose() OR !connection.end()) {
    connection.release();
}

Is there any specific function to know connection is release or not?

I am getting error like "connection already release"

3条回答
对你真心纯属浪费
2楼-- · 2020-06-09 10:07

You can also use below code in every microservice before doing anything.

if(connection.state === 'disconnected'){
    return respond(null, { status: 'fail', message: 'server down'});
}
查看更多
够拽才男人
3楼-- · 2020-06-09 10:21

You can check if the connection is in the pool to see if it was released. The index in the free connections will be -1 if the connection is not released. Here is an example.

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'localhost',
  user            : 'root',
  password        : ''
});

pool.getConnection(function(err, connection) {
    connection.query( 'SELECT something FROM sometable', function(err, rows) {

      console.log(pool._freeConnections.indexOf(connection)); // -1

      connection.release();

      console.log(pool._freeConnections.indexOf(connection)); // 0

   });
});
查看更多
甜甜的少女心
4楼-- · 2020-06-09 10:23

Just in case you don't have access to the pool you can also do this:

connection._pool._freeConnections.indexOf(connection)

This will give you the same answer as the accepted answer.

查看更多
登录 后发表回答