我正在开发一个全栈应用程序,我想在其中注册用户参加比赛。用户从下拉列表中选择模块名称(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)
}