如何在 gmail 阅读邮件中使用异步和等待 API

How to use async and await in gmail read message API

我尝试使用 async/await 而不是回调来读取 Gmail

这是代码片段

const {google} = require('googleapis');
async function getRecentMessageBody(auth) {
    const gmail = google.gmail({version: 'v1', auth});
    try{
       const messageId = await gmail.users.messages.list({
           userId: 'me',
           labelIds: 'INBOX',
           maxResults: 1
        });
      const message = await gmail.users.messages.get({
           userId: 'me',
           id: messageId.data.messages[0].id,
           format : 'full'
      });
      const value = base64url.decode(message.data.payload.body.data);
      console.log(messageId);
     //return value ;
   }
   catch(error) {
     console.log('Error occurs while reading mail :'+ error);
     throw error;
   }
}

但是messageId未定义

而如果我使用

gmail.users.labels.list({
    userId: 'me',
}, (err, res) => {
   if (err) return console.log('The API returned an error: ' + err);
   const labels = res.data.labels;
   if (labels.length) {
      console.log('Labels:');
      labels.forEach((label) => {
        console.log(`- ${label.name}`);
      });
   } else {
      console.log('No labels found.');
   }
});

如何解决这个问题??

使用 promisfy 将回调转换为 promise