我有一个云函数newMessage
来侦听Firebase实时数据库中的任何onCreate()事件。触发newMessage
函数时,它将获取消息内容的快照,并使用mailgun为新消息发送电子邮件通知。
伪代码就像:
exports.newMessage = functions.database
.ref('/privateMessages/{userA}/{userB}/{messageId}')
.onCreate((snap, context) => {
let senderEmail, receiverEmail, messageContent;
// 1. get message senderEmail, receiverEmail and messageContent from the snap and context.
// 2. use mailgun to send email to receiverEmail for the new message
let data = {
from: senderEmail,
to: receiverEmail,
subject: 'New Message from Freebies',
text: messageContent
};
mailgun.messages().send(data, (error, body) => {
console.log(body);
});
})
return null;
})
我担心的是,如果用户正在从newMessage
中泛滥聊天消息,则每次收到新消息时它将发送电子邮件。从接收者的角度来看,如果收件箱中的电子邮件通知过多,将很烦人。所以我的问题是,是否可以有多个onCreate()来获取多条新消息(例如在1小时之内),并且只为这些新消息发送一封电子邮件?