Kun*_*kla 0 javascript node.js promise
我做了一个通过电子邮件ID搜索用户的功能。我正在使用await在异步函数中调用该函数,并将返回值分配给或常量/变量,但在打印常量/变量时变得不确定
function search(email) {
sql = `SELECT email FROM users WHERE email = '${email}'`;
db.query(sql, (err, res) => {
if (err) {
console.log(err);
}
else {
return res[0].email;
}
})
}
const auth = async (req, res, next) => {
try {
const token = req.header('Authorization').replace('Bearer', '');
const decoded = jwt.verify(token, 'catisdoguniversaltruth');
const user = await search(decoded._id);
console.log(user);
if (!user) {
throw new Error();
}
next();
}
catch (e) {
res.status(401).send("Not Authenticated, Please login");
}
};
module.exports = auth;
Run Code Online (Sandbox Code Playgroud)
您需要search()成为一个承诺而不是一个职能。
await 等待解决的诺言。
尝试这个:
function search(email){
return new Promise((resolve, reject) => {
sql = `SELECT email FROM users WHERE email = '${email}'`
db.query(sql, (err, res)=>{
if(err){
reject(err);
}
else{
resolve(res[0].email)
}
})
}
Run Code Online (Sandbox Code Playgroud)
这将作为诺言解决,auth()将等待。
您也可以search()按async/await承诺进行构建。只要您返回承诺解决方案,就不会真正感到困惑。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |