节点 js + mysql2:我应该检查 connection.on('error', fn1) 和 connection.connect(fn2) 中的错误,还是其中一项检查就足够了?

Node js + mysql2: Should I check for errors in both connection.on('error', fn1) and connection.connect(fn2), or one of these checks is sufficient?

我当前的代码是:

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 服务器并设置了错误的访问登录名 and/or 密码,服务器控制台日志显示 onerror 事件和 connection.connect错误显示完全相同的结果。所以我认为只使用其中一个是合理的,同时使用两个可能是多余的......但我仍然怀疑如果我省略一个,是否不是所有的错误类型都可以处理。还是真的多余?

我建议在正常连接上使用 poolConnection。 我正在使用基于 mysql2nodejs-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;
  }
}