Firebase не отвечает на функцию облака - PullRequest
0 голосов
/ 01 ноября 2019

Я добавляю данные в базу данных в реальном времени с помощью React JS, формы контакта и инициализации firebase. Это все работает.

Однако я пытаюсь создать электронное письмо, которое будет отправлено мне, когда будет отправлена ​​новая контактная форма. ТЕКУЩАЯ ПРОБЛЕМА: Облачная функция развернута еще, когда я отправляю форму (и добавляется БД в реальном времени), ничего не происходит. Нет даже сообщения об ошибке в консоли Firebase.

Пожалуйста, вы можете взглянуть на мой код и дать несколько советов о том, как я могу получать автоматические электронные письма.

const functions = require('firebase-functions')
const admin = require('firebase-admin');
const nodemailer = require('nodemailer');
admin.initializeApp()
require('dotenv').config()

const email = process.env.REACT_APP_SENDER_EMAIL;
const pass = process.env.REACT_APP_SENDER_PASS;

exports.sendEmailNotification = functions.firestore.document('messages/{id}')
  .onCreate((snap, ctx) => {
    const data = snap.data();
    let authData = nodemailer.createTransport({
      host: 'smtp.gmail.com',
      port: 465,
      secure: true,
      auth: {
        user: email,
        pass: pass
      }
    });
    authData.sendMail({
      from: data.email,
      to: data.to,
      subject: data.name + ' sent a message',
      text: data.text,
    }).then(res => console.log('email sent')).catch(err => console.log(err));
  });

1 Ответ

1 голос
/ 01 ноября 2019

Ваша функция должна возвращать обещание, которое разрешается, когда вся асинхронная работа завершена.

return authData.sendMail({
  from: data.email,
  to: data.to,
  subject: data.name + ' sent a message',
  text: data.text,
})

Возвращение этого обещания позволяет облачным функциям знать, когда безопасно выполнить очистку и продолжить работу.

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