问题描述
我有下一个课程 db.config.js
,我将在其中连接到数据库:
const dotenv = require('dotenv');
dotenv.config();
const MysqL2 = require('MysqL2');
class DBConnection {
constructor() {
this.db = MysqL2.createPool({
host: 'localhost',user: 'localhost',password: '************',database: '************'
});
this.checkConnection();
}
checkConnection() {
this.db.getConnection((err,connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection was closed.');
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections.');
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused.');
}
}
if (connection) {
connection.release();
}
return
});
}
query = async (sql,values) => {
return new Promise((resolve,reject) => {
const callback = (error,result) => {
if (error) {
reject(error);
return;
}
resolve(result);
}
// execute will internally call prepare and query
this.db.execute(sql,values,callback);
}).catch(err => {
const MysqLErrorList = Object.keys(HttpStatusCodes);
// convert MysqL errors which in the MysqLErrorList list to http status code
err.status = MysqLErrorList.includes(err.code) ? HttpStatusCodes[err.code] : err.status;
throw err;
});
}
}
// like ENUM
const HttpStatusCodes = Object.freeze({
ER_TruncATED_WRONG_VALUE_FOR_FIELD: 422,ER_DUP_ENTRY: 409
});
module.exports = new DBConnection().query;
正如您所看到的,唯一的 query
函数被导出并在每次查询时像 await query(sql,values)
一样调用它,如下所示:
getTable = async (parameters = {}) => {
let sql = `SELECT * from Table`;
return await query(sql);
}
这个领域的新手,不知何故,对于每次进行的查询,连接都会打开并再次重新打开。 我还没有看到任何性能问题,我的意思是,查询每次都以毫秒为单位返回,但我担心建立连接的方式是否可能每次查询都打开,而不仅仅是一次。>
希望我正确地举例说明了我的问题!
感谢您的宝贵时间!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)