解决:无法在回调函数

时间:2019-05-01 12:36:34

标签: javascript mysql node.js express

我正在开发一个全栈应用程序,我想在其中注册用户参加比赛。用户从下拉列表中选择模块名称(m_name),并根据他的选择从mysql服务器获取唯一的模块ID(m_id)。

var m_id // declared outside the function scope

sql.query(`SELECT m_id FROM Modules where m_name='${m_name}'`, 
    function(err, result) {
        m_id = result[0].m_id // getting the data from sql result
        console.log(m_id)  // logged 3 (correctly)
})

// outside the function 
 const INSERT_INTO_PARTICIPANT = `INSERT INTO Participants (m_id) 
VALUES (${m_id}),`

res.send(INSERT_INTO_PARTICIPANT)
    // output: "INSERT INTO Participants (m_id) VALUES (undefined),"

我想在函数外部访问m_id变量。

谢谢

编辑:解决方案是将sql查询包装在返回promise的函数中。

function getIDs() {
    return new Promise((resolve, reject) => {
        sql.query(`SELECT m_id FROM Modules where m_name='${m_name}'`, 
        (err, result) => {
            m_id = result[0].m_id
            resolve()
        }
    })
}

getIDs().then(_ => {
    console.log(m_id)
}

0 个答案:

没有答案