How to get an email when new key is created in Firebase real time database

痞子三分冷 提交于 2020-01-17 17:27:33

问题


Well, I have looked almost everywhere, and apparently there is Firebase Cloud Functions which can be used to send me an email whenever a new key is created in my database. However, I cannot wrap my head around where to start and how to do it. Can someone help me please.


回答1:


You can indeed use a Cloud Function to send an email each time a new node (i.e. a new key) is created in the database.

Have a look at the documentation for Realtime Database triggers here and at one of the official Cloud Functions sample which shows how to send an email, here.

In the sample, emails are sent in response to the creation and deletion of user accounts, but it is really not difficult to integrate the sample code with a Realtime Database trigger.

For example you could do something like the following, adapted from the sample:

const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
// Configure the email transport using the default SMTP transport and a GMail account.
// For Gmail, enable these:
// 1. https://www.google.com/settings/security/lesssecureapps
// 2. https://accounts.google.com/DisplayUnlockCaptcha
// For other types of transports such as Sendgrid see https://nodemailer.com/transports/
// TODO: Configure the `gmail.email` and `gmail.password` Google Cloud environment variables.
const gmailEmail = functions.config().gmail.email;
const gmailPassword = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: gmailEmail,
    pass: gmailPassword,
  },
});

// Your company name to include in the emails
// TODO: Change this to your app or company name to customize the email sent.
const APP_NAME = 'xxxxxx';

exports.sendWelcomeEmail = functions.database.ref('/thePathYouWant/{pushId}')
    .onCreate((snapshot, context) => {

       const createdData = snapshot.val(); // data that was created

       const email = createdData.email; // The email of the user. We make the assumption that it is written at the new database node
       const displayName = createdData.displayName; // The display name of the user.

       return sendWelcomeEmail(email, displayName);
});

// Sends a welcome email to the given user.
async function sendWelcomeEmail(email, displayName) {
  const mailOptions = {
    from: `${APP_NAME} <noreply@firebase.com>`,
    to: email,
  };

  // The user subscribed to the newsletter.
  mailOptions.subject = `Welcome to ${APP_NAME}!`;
  mailOptions.text = `Hey ${displayName || ''}! Welcome to ${APP_NAME}. I hope you will enjoy our service.`;
  await mailTransport.sendMail(mailOptions);
  return console.log('New welcome email sent to:', email);
}

If you are totally new to Cloud Functions for Firebase, it is probably a good idea to follow the tutorial here and to watch the official video series, here.



来源:https://stackoverflow.com/questions/53101368/how-to-get-an-email-when-new-key-is-created-in-firebase-real-time-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!