我们可以在一个云函数中批量处理多个onCreate事件吗?

时间:2019-08-30 05:49:59

标签: firebase firebase-realtime-database google-cloud-functions

我有一个云函数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小时之内),并且只为这些新消息发送一封电子邮件?

0 个答案:

没有答案