【发布时间】:2019-11-12 10:44:21
【问题描述】:
所以我遇到了一个问题,我试图对我的数据库进行异步调用以检查帐户的用户名和密码是否存在,然后再检查它们是否有效。
我遇到的问题是服务器跳过我的数据库调用,然后在从数据库中获取信息之前进行检查。
代码:
class HandlerGenerator {
login (req, res) {
let username = req.body.username;
let password = req.body.password;
let checkUsername = "";
let checkPassword = "";
var lData = {
username: req.body.username,
password: req.body.password
};
// For the given username fetch user from DB
var db = req.db;
var getUser = async () => {
var result = await (
User.findOne(lData , function(err, userLogin){
if(err){
console.log(err);
return
}
console.log(userLogin);
console.log("------====----");
console.log(userLogin.username);
checkUsername = userLogin.username;
checkPassword = userLogin.password;
console.log("------====----");
console.log(checkUsername);
console.log(checkPassword);
})
);
console.log("--00--");
console.log('result' + result)
return result;
};
console.log("does this work?");
if (username && password) {
console.log("------==2==----");
console.log(checkUsername)
console.log(checkPassword)
if (username === checkUsername && password === checkPassword) {
let token = jwt.sign({username: username},
config.secret,
{ expiresIn: '24h' // expires in 24 hours
}
);
// return the JWT token for the future API calls
res.json({
success: true,
message: 'Authentication successful!',
token: token
});
} else {
res.send(403).json({
success: false,
message: 'Incorrect username or password'
});
}
} else {
res.send(400).json({
success: false,
message: 'Authentication failed! Please check the request'
});
}
}
index (req, res) {
res.json({
success: true,
message: 'Index page'
});
}
}
当我运行它时,“这行得通吗?”评论总是先运行,我对自己搞砸了什么感到困惑
【问题讨论】:
-
你不能只是等待,它必须是一个承诺。
-
你只能
await一个promise。 -
你也只是定义函数,你永远不会调用它或解析结果。
-
让我做对了,我需要调用 get 用户吗?
-
我对异步 Promise 还很陌生,您能否快速解释一下?我假设通过设置变量我正在调用它。
标签: javascript express asynchronous async-await