作為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 就可以下載下來使用了!如果有需要更正的地方,望指出,希望自己能夠得到你們的支援和幫助!