Как заставить функцию вызывать только onCreate и onUpdate? - PullRequest
0 голосов
/ 22 сентября 2019

Я хочу, чтобы облачная функция запускалась только при создании и обновлении документа.Я не хочу, чтобы триггер облачной функции onDelete.

Есть ли триггер только для onCreate и onUpdate без отдельной функции make 2?

Я вижу, что у Firebase есть onWrite,но этот триггер также onDelete:

onCreate Инициируется, когда документ записывается в первый раз.

onUpdate Инициируется, когда документ уже существует и имеет любое значение

изменилось.onDelete Срабатывает при удалении документа с данными.

onWrite Срабатывает при срабатывании onCreate, onUpdate или onDelete.

Спасибо всем!

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

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

exports.myFunction = functions.firestore
    .document('/abc/{docId}')
    .onWrite((change, context) => {

      // Exit when the data is deleted.
      if (!change.after.exists()) {
        return null;
      }

      //TODO: put code here you want to execute for create and update
    });
1 голос
/ 22 сентября 2019

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

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

Что-то вроде

exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate((snap, context) => {
      doTheThing(snap, context);
    });

exports.updateUser = functions.firestore
    .document('users/{userId}')
    .onUpdate((change, context) => {
      doTheThing(change.after, context);
    });

function doTheThing(snapshot, context) {
    ...
};
...