我的写法如下:-
const verifiedTokenPromise = token=> new Promise((resolve, reject)=>{
jwt.verify(token,publicCertFile,(err, payload)=>{
if(err){
reject(err);
}else{
resolve(payload);
}
});
});
然后我尝试使用导出函数来解决 promise ;
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;
}
}
当我返回 promise 时,这是未定义的。
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');
}
}
}
这里的确认是未定义的
最佳答案
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
关于javascript - 无法解决 Nodejs Express 中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55223067/