Проблема с цепочкой промисов в функциях Firebase

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

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

    console.info(EmailUsingTemplate1);

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

      if (err)
      {
        console.info('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.info("Log saved with the error."); return 0 })
               .catch(function(error) { console.error("Error adding document: ", error); });
        //End Add New Data in Firestore

      }  

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

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

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

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

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

какой уровень вы используете на firebase?

phonemyatt 25.03.2019 03:54

Пламя 25$ в месяц

Isaac Zarzuri 25.03.2019 03:56

Вам нужно вернуть обещание, которое разрешается только после завершения всей асинхронной работы. Вы возвращаете 0 прямо сейчас. Похоже, что sendTemplatedEmail является асинхронным, и вы не ждете его завершения, прежде чем вернуть этот 0.

Doug Stevenson 25.03.2019 04:02

хорошо, но я не уверен, как это сделать. Можешь помочь мне с этим Дугом? благодарить.

Isaac Zarzuri 25.03.2019 11:00

Можете ли вы, @DougStevenson, помочь мне с кодом, пожалуйста. Спасибо!.

Isaac Zarzuri 25.03.2019 18:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
194
0

Другие вопросы по теме