ExpressJS函数无法返回
我一直在尝试使用Express Web服务器在Electron上开发一个应用程序。我还使用mysql npm软件包存储数据库内容。但是登录功能有问题,我找不到问题。希望您能提供帮助。
server.js
function userLogin(data){
con.query(`SELECT * FROM players WHERE player_username = '${data.login_username}'`, (err, result, fields) => {
if (err) throw err;
var compare = bcryptpareSync(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();
});
一切都已定义。没有显示错误,但函数无法返回,我不明白为什么。如果我在console.log
上方添加return
,它会记录结果,因此查询也可以,但是该函数不会返回任何东西,实际上是任何东西。
因为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 = bcryptpareSync(data.login_password, result[0].player_password);
var response;
if (compare === true) {
response = "1";
} else {
response = "0";
}
res.json(response).end();
});
});