3

我正在使用 mysql 连接池来创建连接。代码如下所示。

var pool = mysql.createPool(connectionProps);

通过访问池,我会得到一个对象,即使连接不成功。我用启动和停止mysql检查了它。

我想要的是,我需要检查连接是否成功,如下所示。

if(pool){ // mysql is started && connected successfully.
   console.log('Connection Success');
   doSomething();
}else{
   console.log('Cant connect to db, Check ur db connection');
}

我想要这样的东西。那么我们如何使用 mysql pool 对象来做到这一点。有人可以帮帮我吗?

谢谢n问候

4

2 回答 2

4

通常你会做一些事情,比如从数据库中选择任意的东西,如果失败就捕获一个错误。文档中的示例。

const pool = mysql.createPool(connectionProps);
pool.query('SELECT 1 + 1 AS solution', (error, results, fields) => {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});
于 2017-09-22T15:00:54.020 回答
0
var pool = mysql.createPool(config.db);
exports.connection = {
query: function () {
    var queryArgs = Array.prototype.slice.call(arguments),
        events = [],
        eventNameIndex = {};

    pool.getConnection(function (err, conn) {
        if (err) {
            if (eventNameIndex.error) {
                eventNameIndex.error();
            }
        }
        if (conn) { 
            var q = conn.query.apply(conn, queryArgs);
            q.on('end', function () {
                conn.release();
            });

            events.forEach(function (args) {
                q.on.apply(q, args);
            });
        }
    });

    return {
        on: function (eventName, callback) {
            events.push(Array.prototype.slice.call(arguments));
            eventNameIndex[eventName] = callback;
            return this;
        }
    };
}
};

并要求像这样使用它:

db.connection.query("SELECT * FROM `table` WHERE `id` = ? ", row_id)
      .on('result', function (row) {
        setData(row);
      })
      .on('error', function (err) {
        callback({error: true, err: err});
      });
于 2017-09-22T15:05:10.783 回答