使用 async await error 和 mysql 处理错误

时间:2021-04-29 23:29:13

标签: mysql node.js error-handling async-await promise

我正在尝试使用 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 块中捕获错误或任何其他方式来优雅地处理错误。

提前致谢!

0 个答案:

没有答案