我一直在尝试使用 Express 网络服务器开发一个在 Electron 上运行的应用程序。我还使用 mysql npm 包来处理数据库内容。但是登录功能有问题,我没能找到问题所在。我希望你能帮忙。
服务器.js
function userLogin(data){
con.query(`SELECT * FROM players WHERE player_username = '${data.login_username}'`, (err, result, fields) => {
if (err) throw err;
var compare = bcrypt.compareSync(data.login_password, result[0].player_password);
if(compare == true) {
return "1";
}
else{
return "0";
};
});
};
app.route('/login').post((req,res) => {
res
.json(userLogin(req.body))
.end();
});
一切都已定义。没有显示错误,但函数无法返回,我不明白为什么。如果我在 return
上方添加一个 console.log
,它会记录结果,因此查询也可以,但该函数不会返回任何内容,实际上是任何内容。
最佳答案
由于 userLogin
是一个异步函数,因此您不能像普通函数一样调用它并期望它返回一个值。相反,您应该在 con.query
的回调中处理其结果(当它们可用时),如下所示:
app.route('/login').post((req, res) => {
con.query(`SELECT * FROM players WHERE player_username = '${data.login_username}'`, (err, result, fields) => {
var compare = bcrypt.compareSync(data.login_password, result[0].player_password);
res.json(compare ? "1" : "0").end();
});
});
关于javascript - ExpressJS函数无法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58308871/