异步并等待节点 js 中的 MySQL 调用

赫兹罗尼

我对 node 还很陌生,我刚刚了解了 javascript 中提供的 async 和 await 函数。我正在尝试在下面附加的代码片段中实现此方法。根据我的理解,数据库响应应该首先打印到控制台,然后“完成”,但我无法让它工作。任何帮助将不胜感激。

还请尝试解释您为修复它所做的工作,因为我想了解我做错了什么。

var mysql = require("mysql");
const cTable = require('console.table');

var connection = mysql.createConnection({
    host: "localhost",
    port: 8889,
    user: "root",
    password: "root",
    database: "testDB"
})

connection.connect((err, fields) => {
    if (err) {
        return console.log(err.code);
    }
});

var displayDB = async () => {
    connection.query('SELECT * FROM products', (err, resp) => {
        if (err) {
            return console.log(err.code);
        } else {
            table = [];
            resp.forEach((product) => {
                obj = {
                    'Product ID': product.productID,
                    'Category': product.category,
                    'Price': product.price,
                    'Stock': product.stockQuantity
                }
                table.push(obj)
            })
            console.table(table)
            connection.end()
        }
    })
}

var test = async () => {
    var x = await displayDB()
    console.log('done')
}
test()
昆汀

returndisplayDB函数中没有任何语句

通常这会导致一个函数返回undefined,但是因为你声明了它async,它会导致它返回一个立即解决的 Promise

如果你想让它等待,直到该数据库查询完成,那么你需要明确地返回new Promise resolve当你准备好了(你叫后connection.end())。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章