nodejs 連接mysql 封裝DBPool

class DBPool {
  constructor() {
    this.mysql = require("mysql");
    this.config = require("./db.config");
    //1.創建mysql連接對象
    this.pool = this.mysql.createPool(this.config);
  }
  query(sql, params, callBack) {
    //2.打開
    this.pool.getConnection((err, connection) => {
      if (err) {
        console.log("數據庫連接失敗");
        throw err;
      }
      console.log("數據庫連接成功");
      //3.執行sql查詢
      connection.query(sql, params, (err, results, fields) => {
        //4.釋放連接
        connection.release();
        //5.銷燬連接: 當連接不需要使用且需要從連接池中移除的時候,我們可以使用destory方法,該方法使用如下所示:
        // connection.destroy();
        if (err) {
          console.log("數據庫操作失敗");
          throw err;
        }
        console.log("數據庫操作成功");
        callBack && callBack({ results, fields });
      });
    });
  }

  queryAsync(sql, params) {
    const self = this;
    return new Promise((resolve, reject) => {
      //2.獲取連接
      this.pool.getConnection((err, connection) => {
        if (err) {
          console.log("數據庫連接失敗");
          reject(err);
          return;
        }
        console.log("數據庫連接成功");
        //3.執行sql查詢
        connection.query(sql, params, (err, results, fields) => {
          connection.release(); //釋放鏈接
          // connection.destroy();//銷燬鏈接
          if (err) {
            console.log("數據庫操作失敗");
            reject(err);
            return;
          }
          console.log("數據庫操作成功");
          resolve({
            results,
            fields,
          });
        });
      });
    });
  }
}

module.exports = new DBPool();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章