我正在尝试创建一个返回用户余额的函数。但是,函数返回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注入的攻击(