亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在節點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 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號