Проблема с цепочкой обещаний в функциях Firebase - PullRequest
0 голосов
/ 25 марта 2019

Здравствуйте, у меня есть эта функция:

exports.SentEmailWithTemplate1 = functions.firestore.document('request/{requestId}').onCreate((snap, contex) => {

    console.log(EmailUsingTemplate1);

    //Send the email
    ses.sendTemplatedEmail(EmailUsingTemplate1, (err, data) =>  {

      if (err)
      {
        console.log('error man');
        var date = new Date();
        //Create a new Log entry
        var logErrorEntry = { ... }
        //Save in the DB the Log created
        logsRef.set(logErrorEntry)
               .then(function(docRef) { console.log("Log saved with the error."); return 0 })
               .catch(function(error) { console.error("Error adding document: ", error); });
        //End Add New Data in Firestore

      }  

Что я хочу сделать, это

  1. Триггер во время создания новой записи в / запрос -> То есть работает нормально
  2. Отправить письмо с AWS SES -> Это работает, как и ожидалось, без проблем
  3. Если электронное письмо отправлено без ошибок, то создайте запись в firestore / logs, в случае успеха -> Это не работает, просто отправляются сообщения emais, но в БД ничего не создается.
  4. Если адрес электронной почты не установлен, что означает ошибки, создайте запись в firestore / logs, и свойство покажет детали. -> его работает нормально

На шаге 3 не работает, но отправляется электронное письмо на адрес, но если я сделаю ошибку, просто чтобы посмотреть, не создаст ли журнал ошибок, он будет. Я не могу понять, почему это не работает, когда нет ошибок, я имею в виду, когда это правильно. Он не создает новую запись в Firestore.

Я думаю, потому что я не правильно разбираюсь в цепочках, я не знаю, надеюсь, вы поможете мне с этим. Большое спасибо.

Обновление: кстати, я получаю эту ошибку в консоли при ее успешном завершении: Ошибка: функция вышла из области действия запроса. Функция прервана.

...