繁体   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