[英]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.