Не удается прочитать свойство 'ref' из неопределенного в облачной функции Firebase - PullRequest
0 голосов
/ 12 апреля 2020

Попробуйте запустить функцию в облачной функции Firebase, как только сгенерируются данные облачной функции. На самом деле, я хочу запустить sendEmail, вызванный добавлением данных коллекции events. Но события происходят несколько раз, а не один раз.

Поэтому я попытался добавить поле publish и оказалось true после того, как событие произошло. Но возникает следующая ошибка:

TypeError: Невозможно прочитать свойство 'ref' из неопределенного

exports.sendEmail = functions.firestore
  .document("events/{eventId}")
  .onCreate((snap, context) => {
    if (!published) {
      const { published } = snap.data();
      // send an email
    }
    return snap.after.ref.set(
      {
        published: true,
      },
      { merge: true }
    );
  }

1 Ответ

0 голосов
/ 12 апреля 2020
Триггеры

onCreate получают объект DocumentSnapshot в качестве первого аргумента, который содержит содержимое только что созданного документа. У него нет свойства с именем after. Так что вы не можете сказать snap.after.ref, потому что snap.after не определено. Вот почему вы получаете сообщение об ошибке.

Возможно, вы путаете onCreate с onUpdate и onWrite, которые оба получают объект Change, имеющий свойства before и after.

Мне не совсем понятно, что именно вы пытаетесь сделать здесь, но триггер onCreate не должен выполняться повторно, если только он не генерирует ошибки и не повторяются попытки.

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