节点 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
。
我正在使用基于 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;
}
}
我当前的代码是:
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
。
我正在使用基于 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;
}
}