为了账号安全,请及时绑定邮箱和手机立即绑定

无法在节点js上使用异步函数为变量赋值

无法在节点js上使用异步函数为变量赋值

呼如林 2023-03-10 14:39:15
我试图从用户那里获取 jwtauthtoken 并将其传递给在该 js 文件中导入的 getuserId() 。但是我得到的是未定义的值,而不是函数返回的解码 ID。在 getUserId() 它显示解码的令牌我的控制台输出:用户 ID 5f68efb234a7656在获取请求时:未定义任何人都可以帮助我解决问题。personalDetailsController.jsmodule.exports.personaldetail_get = async (req,res) => {    const token = req.cookies.jwtauthtoken;        let userId = await getUserId(token);        console.log("On get request : "+ userId); // output On get request : undefined    res.render('Candidate/personal', { csrfToken: req.csrfToken() });}getUserId.jsmodule.exports.getUserId =  (tokenid) => {    const token = tokenid;    try{        if (token) {            jwt.verify(token,'2308199919990823', async (err, decodedToken) => {                if(err){                    console.log(err);                    return null;                } else {                    console.log("user id " + decodedToken.id); // Output user id 5f68efb234a7656                    return decodedToken.id;                }            });        } else {            return null;        }    }    catch(err)    {        console.log(err)        return null;    }}
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

const decodedToken = await getUserId(token)意味着两件事:

  • getUserId 必须返回一个 Promise。

  • decodedToken由本承诺的决议给出。

getUserId = tokenid => {
    return new Promise(resolve => {
        jwt.verify(tokenid, '2308199919990823', (err, decodedToken) => resolve(decodedToken))
    })
}


查看完整回答
反对 回复 2023-03-10
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

你忘了在你的函数调用中添加一个return...


此外,您拥有的 try catch 块将不起作用,因为您的验证函数是异步的……您需要将其包装在 Promise 中……


module.exports.getUserId =  (tokenid) => {


    const token = tokenid;


    if (token) {

        return new Promise((reject, resolve) => {

            jwt.verify(token,'2308199919990823', async (err, decodedToken) => {

                if(err){

                    console.log(err);

                    return null;

                } else {

                    console.log("user id " + decodedToken.id); // Output user id 5f68efb234a7656

                    return resolve(decodedToken.id);

                }


            });

        });

    }

}


查看完整回答
反对 回复 2023-03-10
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信