使用 async/await 函数节点获取"undefined".js



我试图通过从用户路由调用函数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函数接收userid,以便查找用户是否存在。

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

如果您正在使用googleapi包,请尝试以下操作:

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

最新更新