【发布时间】:2023-01-23 07:20:38
【问题描述】:
早些时候我正在使用单个连接,但现在我正在尝试使用 Mysql 在 Nodejs 中创建一个数据库池。
我正在按照单一模式或基于类的模式来创建查询和其他操作
早期配置(一切正常)
const connection = mysql.createConnection({
host: dbConfig.HOST,
user: dbConfig.USER,
password: dbConfig.PASSWORD,
database: dbConfig.DB
});
connection.connect();
connection.query("SET AUTOCOMMIT=false;", (err) => {
if(err){
console.log(err)
console.log("Couldn't set auto commit to false")
}else{
console.log("AutoCommit set to false")
}
});
function query(sql, params, autorollback) {
return new Promise((resolve, reject) => {
//let currentTime = new Date().valueOf();
let query = connection.query(sql, params, (err, resp) => {
if(err && autorollback) {
return resolve(rollback(err));
}
else if (err) {
console.log(err)
return reject(err);
}
//console.log("Time Taken: ", new Date().valueOf() - currentTime, "\n", query.sql);
//console.log(resp);
resolve(resp);
});
});
}
创建池配置(未获得查询的响应)
const connection = mysql.createPool({
host: dbConfig.HOST,
user: dbConfig.USER,
password: dbConfig.PASSWORD,
database: dbConfig.DB,
connectionLimit: 4,
});
connection.getConnection(function (err, conn) {
conn.query("SET AUTOCOMMIT=false;", (err) => {
if (err) {
console.log(err)
console.log("Couldn't set auto commit to false")
} else {
console.log("AutoCommit set to false")
}
});
});
function query(sql, params, autorollback) {
console.log(sql)
return new Promise((resolve, reject) => {
//let currentTime = new Date().valueOf();
connection.getConnection(function (err, conn) {
if (err) {
console.log(err)
return reject(err);
}
let query = conn.query(sql, params, (err, resp) => {
console.log(sql)
if (err && autorollback) {
return resolve(rollback(err));
}
else if (err) {
console.log(err)
return reject(err);
}
//console.log("Time Taken: ", new Date().valueOf() - currentTime, "\n", query.sql);
//console.log(resp);
resolve(resp);
conn.release();
});
})
});
}
【问题讨论】:
标签: javascript mysql node.js