Node.js 如何返回充满邮件内容的数组?
我是新来的有承诺的人,我正试图在gmail的承诺完成后归还尸体Node.js 如何返回充满邮件内容的数组?,node.js,gmail-api,Node.js,Gmail Api,我是新来的有承诺的人,我正试图在gmail的承诺完成后归还尸体 app.get('/', (req, res) => { var body =[]; if (!authed) { // Generate an OAuth URL and redirect there const url = oAuth2Client.generateAuthUrl({ access_type: 'offline',
app.get('/', (req, res) => {
var body =[];
if (!authed) {
// Generate an OAuth URL and redirect there
const url = oAuth2Client.generateAuthUrl({
access_type: 'offline',
scope: 'https://www.googleapis.com/auth/gmail.readonly'
});
console.log(url)
res.redirect(url);
} else {
// getmail(), function(stories) {
// console.log(stories);
// };
getmail().then(function(gmail) {
console.log("mails"); // "Success"
console.log(gmail); // "Success"
}, function(value) {
});
}
getmail = async function(){
const gmail = await google.gmail({ version: 'v1', auth: oAuth2Client });
const body = [];
await gmail.users.messages.list({
'userId': 'me',
'labelIds': 'UNREAD',
'maxResults': 10
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
const msgs= res.data.messages;
if (msgs.length == 0) {
console.log('No labels found.');
} else {
console.log('Messages:');
the_format = 'full';
for (var i = 0; i < msgs.length; i++) {
var msg = msgs[i];
body[i] = gmail.users.messages.get({
auth: oAuth2Client,
userId: 'me',
id: msg.id,
payload:msg.payload,
format: the_format,
}, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
else{
console.log("Returning")
return response.data.payload.parts[0].body.data;
}
});
console.log(body[i])
}
}
});
console.log(body);
return Promise.all(body,gmail);
}
})
app.get('/',(req,res)=>{
变量体=[];
如果(!已授权){
//生成一个OAuth URL并重定向到那里
const url=oAuth2Client.generateAuthUrl({
访问类型:“脱机”,
范围:'https://www.googleapis.com/auth/gmail.readonly'
});
console.log(url)
res.redirect(url);
}否则{
//getmail(),函数(故事){
//console.log(故事);
// };
getmail().then(函数(gmail){
console.log(“邮件”);/“成功”
console.log(gmail);/“成功”
},函数(值){
});
}
getmail=异步函数(){
const gmail=wait google.gmail({version:'v1',auth:oAuth2Client});
常量体=[];
等待gmail.users.messages.list({
'userId':'me',
“labelIds”:“未读”,
“maxResults”:10
},(误差、分辨率)=>{
if(err)返回console.log('API返回错误:'+err);
const msgs=res.data.messages;
如果(msgs.length==0){
console.log('未找到标签');
}否则{
log('Messages:');
_格式='full';
对于(变量i=0;i
我肯定我做错了什么,我只是不知道是什么,邮件被加载了,但函数从不等待正文填充,返回的是空的。我还尝试了body.push(response.data.payload.parts[0].body.data;),但仍然返回空的不确定问题到底出在哪里。你能实现日志来确定在什么时候代码的工作方式与你期望的不同吗?我使用了日志,console.log(gmail)和console.log(body);是空的,它似乎没有等待它,然后它在promise console.log(body[i])中再次打印它,并将其填充