首页 > 解决方案 > 谷歌云功能 | 每次为实时数据库触发另一个带有 onCreate 的函数时,都会调用带有触发器 onUpdate 的函数

问题描述

我的代码中有两个云函数:一个带有 onCreate,另一个带有 onUpdate 触发器,用于同一路径上的实时数据库。每当添加新数据时,也会调用带有 onUpdate 的函数。我怎样才能防止这种情况?

exports.createSdkUser = functions.database.ref("users/{app}/{user}").onCreate(async (snapshot, context) => {
    ...
});


exports.updateSdkUser = functions.database.ref("/users/{app}/{user}").onUpdate(async (snapshot, context) => {
    ...
});

标签: javascriptnode.jsfirebase-realtime-databasegoogle-cloud-functions

解决方案


创建一个onUpdate()函数就像为该文档设置一个观察者事件......如果添加或更改或删除任何数据,则该函数将被执行......您无法阻止这种情况的发生,但您可以设置应该在该函数上执行的内容以及不应该使用以下条件:

  exports.updateSdkUser = functions
 .database.ref("/users/{app}/{user}")
 .onUpdate(async (snapshot, context) => {
  snapshot.forEach((snap)=>{
      if(snap.data().username) {
        // Do this if there is certain data in my database (for example : username)
      }else {
        // else just return don't do anything
        return;
      }
   })
  });

推荐阅读