简体   繁体   中英

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

I'm trying to get the user id by calling function getUser from my user route but I get undefined. I try to understand what is the root cause of that. Attaching the code:

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);
    }
})

The getUser function receives the userid in order to find if the user exists.

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;
            }
        }
    })

}

If your are using googleapis package, try this:

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;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM