J'ai un écrit comme suit : -

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

Ensuite, j'ai essayé de résoudre la promesse en utilisant une fonction d'exportation ;

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;
  }

}

Quand je retourne la promesse, cela vient comme indéfini.

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');
        }
    }
}

Ici, la confirmation arrive comme indéfinie

0
Jithin Zacharia 18 mars 2019 à 16:57

2 réponses

Meilleure réponse
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');
        }
    }
}

Utilisez simplement await JWTCertifier.verifyUserRequest(req.headers['x-api-key']); au lieu de JWTCertifier.verifyUserRequest(req.headers['x-api-key']);. Cela revient promise

1
Hamza Ahmed 18 mars 2019 à 14:07

tokenResolver est une fonction async et les fonctions async renvoient toujours un Promise, vous devez donc attendre que cette promesse se résolve.

0
Prithwee Das 18 mars 2019 à 14:08