【问题标题】:Prevent child triggers call in Firebase functions防止在 Firebase 函数中调用子触发器
【发布时间】:2020-12-09 21:40:31
【问题描述】:

您好,我对 firebase 函数中子触发器的行为有一点困难。为了演示,我创建了一个小项目。

  1. 我们有一个像这样的实时数据库结构:

  2. 并且 firebse 触发器。第一个触发器在项目创建时增加计数。第二个在项目删除时减少计数。删除列表时最后触发删除项目:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();

// ON CREATE ITEM 
export const onItemCraate  = functions.database.ref('listItems/{listKey}/{itemKey}').onCreate(async(snapshot, context)=>{
  try{
      return  admin.database().ref(`list/${context.params.listKey}/itemCount`).transaction(count =>{
        return count+1;
    });
  }catch (error){
    throw new functions.https.HttpsError(error.code, error.message, error.details);
  }
})

// ON DELETE ITEM 
export const onItemDelete  = functions.database.ref('listItems/{listKey}/{itemKey}').onDelete(async(snapshot, context)=>{
  try{
      return  admin.database().ref(`list/${context.params.listKey}/itemCount`).transaction(count =>{
        return count-1;
    });
  }catch (error){
    throw new functions.https.HttpsError(error.code, error.message, error.details);
  }
},)

// ON LIST DELETE
export const onListDelete  = functions.database.ref('list/{listKey}').onDelete(async(snapshot, context)=>{
  try{
      return  admin.database().ref(`listItems/${context.params.listKey}`).remove();
  }catch (error){
    throw new functions.https.HttpsError(error.code, error.message, error.details);
  }
})

所以问题是:当我删除列表时,“onDeleteList”触发删除项目firebase cast“onItemDelete”触发每个listItem。然后在“ghost”列表中更新“itemCount”。 当父母被移除时,有什么方法可以防止孩子触发呼叫?下图:

删除前

删除后

日志

【问题讨论】:

    标签: typescript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    有没有办法在父级被移除时防止子级触发调用?

    没有。当父节点被删除时,子节点会被隐式删除,并且总是会触发匹配子节点路径的 onDelete 函数。

    如果您希望触发器在某些情况下执行不同的操作,则必须对函数进行编码以检测该情况并采取相应措施。

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      相关资源
      最近更新 更多