无法在Nodejs Express中解决承诺

时间:2019-03-18 13:57:52

标签: javascript

我写的是以下内容:-

const verifiedTokenPromise = token=> new Promise((resolve, reject)=>{
  jwt.verify(token,publicCertFile,(err, payload)=>{
    if(err){
      reject(err);
    }else{
      resolve(payload);
    }
  });
});

然后我试图通过使用导出功能来兑现承诺;

exports.verifyUserRequest = (token)=>{
  if(!token){
    return false;
  }else{
    async function tokenResolver(token){
      try{
        var payload = await verifiedTokenPromise(token);
        console.log((payload));
        return true;
      }catch(e){
        return false;
      }
    }
    var demo3 = tokenResolver(token);
    return demo3;
  }

}

当我返回承诺时,这是不确定的。

exports.isTokenValid = (req, res)=>{
    if(!req.headers['x-api-key']){
        res.status(422).json('No token provided');
    }else{
        confirmation = JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
        console.log("sdjfnsjdnfjsdf"+ " "+confirmation);
        if(confirmation == true){
            res.status(200).json('Valid token');
        }else{
            res.status(401).json('Invalid token');
        }
    }
}

这里的确认信息是不确定的

2 个答案:

答案 0 :(得分:1)

exports.isTokenValid = async (req, res)=>{
    if(!req.headers['x-api-key']){
        res.status(422).json('No token provided');
    }else{
        confirmation = await JWTCertifier.verifyUserRequest(req.headers['x-api-key']);
        console.log("sdjfnsjdnfjsdf"+ " "+confirmation);
        if(confirmation == true){
            res.status(200).json('Valid token');
        }else{
            res.status(401).json('Invalid token');
        }
    }
}

只需使用await JWTCertifier.verifyUserRequest(req.headers['x-api-key']);而不是JWTCertifier.verifyUserRequest(req.headers['x-api-key']);。这将返回promise

答案 1 :(得分:0)

tokenResolver是一个async函数,而async函数始终返回一个Promise,因此您必须等待该承诺解决。