【问题标题】:How to check if the db connection is success or not in node js and mysql如何在节点js和mysql中检查db连接是否成功
【发布时间】:2017-09-22 14:28:15
【问题描述】:

我正在使用 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 对象来做到这一点。有人可以帮帮我吗?

谢谢你的问候

【问题讨论】:

    标签: javascript mysql node.js node-mysql connection-pool


    【解决方案1】:

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

    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);
    });
    

    【讨论】:

      【解决方案2】:
      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});
            });
      

      【讨论】:

        猜你喜欢
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多