如何在删除之前从firebase云存储下载并发送文件



这是我当前的解决方案,它正在发送一个空文件。我基本上需要在文件从特定的桶中删除之前通过电子邮件发送文件

exports.sendBeforeDelete = functions.storage.bucket('reports').object().onDelete(async (object:any) => {
const fileBucket = object.bucket; 
if (fileBucket === 'reports') {
const filePath = object.name;
if (filePath) {
const file = await request(`${object.mediaLink}&token=${object.metadata.firebaseStorageDownloadTokens}`);
const email = example@example.com
const mailOptions = {
from: 'example',
to: email,
subject: 'Report Deleted',
text: ` Mail Body
`,
attachments: [{
file
}
]
};
transporter.sendMail(mailOptions, function (error: any, info: any) {
if (error) {
console.log('error', error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
}
return Promise.resolve()
});

我试过只使用这个对象,但似乎从来没有得到一个有效的文件。

所提供的代码似乎确实没有正确处理promise和异步编程。异步工作完成后,请尝试返回已解析的promise。您可以通过使用Await运算符来完成此操作。

当您试图在异步工作完成之前返回Promise.resolve时,此函数在完成任何工作之前终止。

我们发现的问题是该文件已在此函数上删除

functions.storage.backet('reports'(.object((.onDelete((

因此我们不再可以访问它。相反,我们在早上6点运行了一个cronjob,检查当天是否应该删除一个文件,然后发送它,而不是删除文件

相关内容

  • 没有找到相关文章

最新更新