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

 

posted @ 2022-07-08 11:54  土豆哥  阅读(262)  评论(0编辑  收藏  举报