Node.Js:Async返回未定义



我正在尝试创建一个返回用户余额的函数。但是,函数返回undefined。我已经检查了stackoverflow上的所有解决方案,但没能找到解决方案。

返回函数

async function checkBal(username) {
db.getConnection(async (err, connection) => {
if (err) throw (err)
let queryBal = `SELECT balance FROM user WHERE username = "${username}";`
connection.query(queryBal, async (err, result) => {
if (err) throw (err)
if (result.length != 0) {
const data = result[0].balance
return data               

我调用的函数

app.post("/api/bet", urlencodedParser, async function(req, res){ 
ssn = req.session;
if (ssn.username) {
balance = await checkBal(ssn.username)
console.log(balance)

您需要返回一个Promise,当函数完成时,该Promise将通过resolve返回数据

async function checkBal(username) {
return new Promise((resolve, reject) => {
db.getConnection((err, connection) => {
if (err) reject(err)
let queryBal = `SELECT balance FROM user WHERE username = "${username}";`
connection.query(queryBal, (err, result) => {
if (err) reject(err)
if (result.length != 0) {
const data = result[0].balance
resolve(data);
}
});
});
});
}

如果函数定义前面没有await,则不需要async

(另外,您应该转义username,因为您的代码容易受到SQL注入的攻击(

最新更新