作为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 就可以下载下来使用了!如果有需要更正的地方,望指出,希望自己能够得到你们的支持和帮助!