问题描述
我当前的代码是:
const MysqL = require('MysqL2');
function createConnection() {
return new Promise((res,rej) => {
let connection = MysqL.createConnection({
host: "127.0.0.1",port: "3306",user: "root",database: "UniversityEmployeesDB",password: ""
});
connection.on('error',function (err) {
console.log(`Error while creating a MysqL connection: ${err.toString()}`);
rej(err);
});
connection.connect(function (err) {
if (err) {
console.log(`Error while connecting to MysqL server: ${err.toString()}`);
rej(err);
}
else {
console.log("Connection with the MysqL server was successfully established.");
res(connection);
}
});
});
}
我在错误情况下对其进行了测试,关闭了我的本地 MysqL 服务器并设置了错误的访问登录名和/或密码,并且服务器控制台日志显示 onerror 事件和 connection.connect 触发错误显示完全相同的结果。所以我认为只使用其中一种是合理的,同时使用两者可能是多余的......但我仍然怀疑如果我省略一种,不是所有的错误类型都可以处理。还是真的多余?
解决方法
我建议在正常连接上使用 poolConnection
。
我正在使用带有 mysql2
和 nodejs-express
的基于 MVC 的架构。
以下是创建用于建立数据库连接的 connector.js
文件的方法。
// connector.js
const mysql = require('mysql2');
var connection = mysql.createPool({
host: process.env.HOST,// port: 3306,user: process.env.DB_USERNAME,password: process.env.DB_PASSWORD,database: process.env.DB_NAME,connectionLimit: 10,multipleStatements: true
});
connection.getConnection((err) => {
if (err) console.log(JSON.stringify(err));
else {
console.log('Connected!')
}
});
module.exports = connection.promise();
并在 con.query
上使用此方法执行查询
const con = require('../database/connector.js');
const fn = async ( params ) => {
try{
const [data] = await con.execute('select * from tbl_users where user = ?',[params]);
return data;
} catch(err) {
return false;
}
}