首页 > 解决方案 > 试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined

问题描述

我正在尝试创建一个从 SQL 'SELECT * FROM' 返回统计数据数组的函数,当我不使用函数返回它时,它可以工作,但我不能在 'function(错误,结果)'

con.query(`SELECT * FROM MemberPeniz WHERE memberId = '${memberID}'`, function(err, results) {
            if(err) {
                throw err;
            }
            console.log(results)
        })

我试过这个:

function checkTimeoutMEMBERid(memberID) {
        con.query(`SELECT * FROM MemberPeniz WHERE memberId = '${memberID}'`, function(err, results) {
            if(err) {
                throw err;
            }
            return results
        })

    }
    const result = checkTimeoutMEMBERid(message.author.id);
    console.log(result)

但正如我所说,无论我传入什么 id,它都会返回 undefined

标签: javascriptmysqlnode.jsdiscord.js

解决方案


这是因为,您将结果返回给回调,而回调将不会返回给调用者函数。您可以将功能更新为,

function checkTimeoutMEMBERid(memberId) {
return new Promise((resolve, reject) =>{
    con.query(`SELECT * FROM MemberPeniz WHERE memberId = ?`,[memberId], (err, results) => {
        if(err) {
            return reject(err)
        }
        resolve(results)
    })
  })
}
checkTimeoutMEMBERid(message.author.id)
.then(result =>
{
console.log(result)
})

推荐阅读