Node.Js:异步 return 给出未定义

Node.Js: Async return gives undefined

我正在尝试制作一个 returns 用户余额的功能。但是,函数returnsundefined。我已经检查了 Whosebug 上的所有解决方案,但我找不到解决方案。

Return 函数

    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)

您需要 return 一个 Promise,它将在函数完成后 return 通过 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 Injections