如何使函数仅触发onCreate和onUpdate?

时间:2019-09-22 09:06:59

标签: firebase google-cloud-platform google-cloud-firestore google-cloud-functions

我希望Cloud Function仅在创建和更新文档时触发。我不希望云功能触发onDelete

是否只有onCreateonUpdate的触发器没有make 2单独的功能?

我看到Firebase有onWrite,但此触发器也有onDelete

  

onCreate在首次写入文档时触发。

     

onUpdate当文档已经存在并且具有任何值时触发

     

已更改。 onDelete在删除包含数据的文档时触发。

     

onWrite在触发onCreate,onUpdate或onDelete时触发。

谢谢大家!

2 个答案:

答案 0 :(得分:1)

没有组合触发器,因此您需要为此声明两个Cloud Functions。

但是您可以在单个常规函数中实现实际的逻辑,然后从两个Cloud Functions中调用它。

类似

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) {
    ...
};

答案 1 :(得分:1)

您可以对处理程序使用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
    });