Node.js 服务连接 MySQL

264 阅读1分钟

作为nodejs程序猴,必然少不了写脚本,而我的工作中用的比较多的数据库为mysql,发现每写一次脚本就会写一套连接mysql的配置,如此重复,索性自己写一个工具类(mysql.js):

'use strict';
const mysql = require('mysql');

class MySQL {
    constructor(DBConf) {
        this.pool = mysql.createPool(DBConf); // 这里的DBConf指的是数据库信息
        console.log('---------------------------------------------------已创建数据库连接池----------------------------------------------');
    }

    static getInstance(DBConf) {
        if (!MySQL.instance) {
            MySQL.instance = new MySQL(DBConf);
        }
        return MySQL.instance;
    }

    query(sql, options) {
        return new Promise((resolve, reject) => {
            this.pool.getConnection((err, conn) => {
                if (err) {
                    reject(err);
                    console.error(sql, err);
                } else {
                    conn.query(sql, options, (error, results) => {
                        //释放连接  
                        conn.release();
                        if (error) {
                            console.error(sql, options, error);
                            reject(error);
                        } else {
                            //事件驱动回调  
                            resolve(results);
                        }
                    });
                }
            });
        });
    }
}


module.exports = MySQL;

使用方式,在同级目录下创建DBConf.js:

module.exports = {
    connectionLimit: 3,     // 连接池的最大连接数
    user: 'root',           // 数据库用户名
    password: '123456',     // 密码
    database: 'test',  // 数据库名称
    host: '127.0.0.1',      // ip
    multipleStatements: true    // 允许多sql执行
}

同级目录下创建test.js

'use strict';
const DBConf = require('./DBConf');
const MySQL = require('./mysql').getInstance(DBConf);

(getAllUser() {
    const result = await MySQL.query("select * from user");
    console.log(result);
})();

完整实例在这里 github.com/iPenManShip…,如果帮助到您,点个赞,我把这个包发布到了npm:npm install node-mysql-instance 就可以下载下来使用了!如果有需要更正的地方,望指出,希望自己能够得到你们的支持和帮助!