【发布时间】:2023-01-26 19:03:09
【问题描述】:
我在 node.js 中为我的网站构建一个电子邮件验证,为了让它工作,它改变了 mysql 数据库中的一个值,如果它工作或不工作,它必须返回 1 或 0,但代码不等待即使我使用async 和await,返回和 inmidiatly 走得更远。
这是我在 pages.js 中使用的代码:
router.get("/verify-email", async (req,res) => {
var tokens = req.query.token
console.log(tokens)
const verified = await emailverification(tokens)
console.log("hello",verified)
if (verified == 1) {
res.sendFile('verifySuccess.html',{root: "./public"});
} else {
res.sendFile('verifyFail.html',{root: "./public"});
}
})
这是它必须等待的功能:
const emailverification = async(token,req,res,next) => {
var tokens = token
console.log("hello",tokens)
db.query('SELECT * FROM users WHERE token = ?',[tokens], async(err, result) =>{
console.log("1")
if (err) throw err;
console.log(result)
if(result[0].verify == "0"){
console.log("2")
console.log(result[0].email)
if (result.length > 0) {
console.log("2.5")
var email = result[0].email
console.log(email)
console.log("2.75")
db.query('UPDATE users SET verify = 1 WHERE email = ?', email, async(err, result) => {
console.log(result[0])
console.log("3")
if(err) throw err
return 1
})
} else {
console.log("5")
return 0;
}
}else{
console.log("6")
return 0;
}
})
}
module.exports = emailverification;
我在 google 和 stackoverflow 上进行了搜索,发现了很多关于此的内容,但它在我的代码中不起作用。
这是源代码:the source code
以下2个问题: how-do-i-return-the-response-from-an-asynchronous-call 和 how-to-properly-return-a-result-from-mysql-with-node 没有帮助,因为这些问题是关于其他问题的,而不是关于我遇到的问题
请不要介意我使用它们来查看运行和不运行的所有日志,
【问题讨论】:
标签: javascript node.js express async-await