簡體   English   中英

使用 async/await 獲取“未定義” function node.js

[英]Getting “undefined” with async/await function node.js

我試圖通過從我的用戶路由中調用 function getUser 來獲取用戶 ID,但我沒有定義。 我試圖了解造成這種情況的根本原因是什么。 附上代碼:

router.post('/users', async(req,res)=>{
    console.log(req.body);
    const userId = req.body.id;
    try{
        var user = await gs.getUser(userId);
        console.log('From user ' + user);
        res.status(201).send(user);
    }catch(error){
        console.log('In error');
        res.status(400).send(error);
    }
})

getUser function 接收用戶標識以查找用戶是否存在。

async function getUser(id){//user sheet by id 

    const client = new google.auth.JWT(
        keys.client_email,
        null,
        keys.private_key,
        ['https://www.googleapis.com/auth/spreadsheets']
    );

    const sheets = google.sheets({version:'v4', auth:client});

    
    await sheets.spreadsheets.values.get({
        spreadsheetId:'1K1U4Y7SgS97SaHMrWJUGZOiUlh51tbMPZTAPPe-SNCg',
        range:'Data!A2:B4'
    }, (err,res)=>{
        if(err){
            console.log(err);
            return;
        }
        else{

            const users = res.data.values
            let user= undefined;
             users.map(item=>{
                if(item[0] === id){
                    user = item[0];
                    //console.log(user);
                    return user;
                }
            })

            if(!user){
                //console.log(user);
                //console.log('Not found');
                return false;
            }
        }
    })

}

如果您使用的是 googleapis package,請嘗試以下操作:

async function getUser(id) {
    const client = new google.auth.JWT(
        keys.client_email,
        null,
        keys.private_key,
        ['https://www.googleapis.com/auth/spreadsheets']
    );

    const sheets = google.sheets({version:'v4', auth:client});

    try {
        const response = await sheets.spreadsheets.values.get({
            spreadsheetId:'1K1U4Y7SgS97SaHMrWJUGZOiUlh51tbMPZTAPPe-SNCg',
            range:'Data!A2:B4'
        });

        const users = response.data.values
        let user = users.find(item => item[0] === id);

        if(!user) {
            return false;
        }

        return user;
    } catch (e) {
        console.log(err);
        return;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM