снимок облачной функции firebase не определен - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь написать функцию с облачной функцией firebase, которая будет отправлять электронную почту, как только новое сообщение будет добавлено в мою базу данных в режиме реального времени "contactMessages".так что я сделал это, но здесь я получил неопределенный снимок:

const functions = require("firebase-functions");
const nodemailer = require("nodemailer");
const gmailEmail = 
encodeURIComponent(functions.config().gmail.email);
const gmailPassword = 
encodeURIComponent(functions.config().gmail.password);
const mailTransport = nodemailer.createTransport(
`smtps://${gmailEmail}:${gmailPassword}@smtp.gmail.com`
 );

exports.sendContactMessage = functions.database
  .ref("/contactMessages/{pushKey}")
  .onWrite((change, context) => {
  // Only send email for new messages.
  if (snapshot.previous.val() || !snapshot.val().name) {
    return;
  }

  const val = snapshot.val();

  const mailOptions = {
    to: "test@example.com",
    subject: `Information Request from ${val.name}`,
    html: val.html
  };

  return mailTransport.sendMail(mailOptions).then(() => {
    return console.log("Mail sent to: test@example.com");
  });
});

1 Ответ

1 голос
/ 17 мая 2019

Измените это:

   exports.sendContactMessage = functions.database
  .ref("/contactMessages/{pushKey}")
  .onWrite((change, context) => {
  // Only send email for new messages.
  if (snapshot.previous.val() || !snapshot.val().name) {
    return;
  }

на это:

exports.sendContactMessage = functions.database
  .ref("/contactMessages/{pushKey}")
  .onWrite((change, context) => {
  // Only send email for new messages.
  if (change.before.val() || !change.after.val().name) {
    return;
  }

Из документов:

Для onWrite и onUpdate событий,параметр change имеет поля before и after.Каждый из них представляет собой DataSnapshot с теми же методами, доступными в admin.database.DataSnapshot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...