我对 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()
您return
的displayDB
函数中没有任何语句。
通常这会导致一个函数返回undefined
,但是因为你声明了它async
,它会导致它返回一个立即解决的 Promise 。
如果你想让它等待,直到该数据库查询完成,那么你需要明确地返回new Promise
该你 resolve
当你准备好了(你叫后connection.end()
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句