簡體   English   中英

Firebase雲功能快照未定義

[英]firebase cloud function snapshot undefined

我試圖編寫一個具有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");
  });
});

更改此:

   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;
  }

從文檔:

對於onWriteonUpdate事件, change參數具有beforeafter字段。 其中每個都是一個DataSnapshot具有admin.database.DataSnapshot可用的相同方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM