我正在尝试使用 mysql 查询进行错误处理,并试图找出最好的方法。
这是我的代码
在 operation.js 中,我尝试了两种方式
class MysqlOperations {
static async insert(connection, tableName, data) {
return connection.query("INSERT INTO ?? VALUES ?;", [tableName, data]);
}
}
module.exports = exports = MysqlOperations;
或
class MysqlOperations {
static async insert(connection, tableName, data) {
return connection.query("INSERT INTO ?? VALUES ?;", [tableName, data], err => {
throw err
});
}
}
module.exports = exports = MysqlOperations;
在 controller.js 中,我试图捕捉插入操作中的错误。
const readData = async (req, res) => {
try {
customersData = [1, 'TEST'];
await mysqlOperations.insert(connection, 'Customer', customersData);
console.log('here')
} catch (err) {
console.log('something wrong')
} finally {
console.log('in finally')
}
}
mysql.js
const mysql = require('mysql');
const packageJson = require('../../../package.json');
const host = process.env.MYSQL_HOST || packageJson.config.database.mysql.host;
const port = process.env.MYSQL_PORT || packageJson.config.database.mysql.port;
const user = process.env.MYSQL_USER || packageJson.config.database.mysql.user;
const password = process.env.MYSQL_PASSWORD || packageJson.config.database.mysql.password;
const database = process.env.MYSQL_DATABASE || packageJson.config.database.mysql.database;
const connection = mysql.createConnection({
host: host,
port: port,
user: user,
password: password,
database: database
})
module.exports = exports = connection;
如果没有错误,则插入查询有效,但我卡在错误处理部分。 如果我调用 readData() 的控制台将在这里 -> in finally -> throw err(如果我在 operation.js 中使用了第二个实现)但从未进入 catch 块。所以我想知道是否有一种方法可以在 catch 块中捕获错误或任何其他方式来优雅地处理错误。
提前致谢!