【问题标题】:onUpdate change diff or patch value?onUpdate 更改差异或补丁值?
【发布时间】:2020-12-22 01:14:00
【问题描述】:

我在 Firebase Cloud Functions 中为实时数据库使用 onUpdate 事件处理程序。效果很好,我从change 对象中获取了之前/之后的快照值,如下所示:

Before change :  { '-M0ONRMFJxvClvoFnHP_': true, '-MNxnG-xnFrYOoU_H0U7': false }
After change :  { '-M0ONRMFJxvClvoFnHP_': true } 

我很好奇是否有一种“简单”的方法来获取此更新操作的差异或补丁等效项?我是否必须潜入 Javascript 兔子洞并挖掘一个库(有什么建议?)还是 change 对象内有内置功能?

注意:referencefieldMask 之间有一个 reference,但我并没有看到任何设置方法(似乎没有记录)。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    好吧,我没有发现任何太令人兴奋的东西,所以我只是写了以下符合我特定目的的内容:

      let beforeKeys = Object.keys(change.before.val() || {});
      let afterKeys = Object.keys(change.after.val() || {});
    
      let deletions = [];
      let insertions = [];
    
      deletions = beforeKeys.filter(item => !afterKeys.includes(item));
      insertions = afterKeys.filter(item => !beforeKeys.includes(item));
    

    然后我将每个数组的元素映射到一个异步调用,以便删除和添加到我的实时数据库中的特定引用。

    可能有一种更有效的方法来实现这一点,但现在应该可行。

    感谢您参加我的 TED 演讲。 ?

    【讨论】:

    • 你的做法是对的,也是Official Firebase Documentation中提到的那个。
    • @NibrassH,感谢您的留言!是的,我很确定如何获取前后快照。但我希望(可以梦想!)会有一个内置的 diff 工具或类似于我所做的删除和插入的工具——当你试图触发其他一些基于行为的行为时,这非常重要关于更新期间添加或删除的内容。我猜那不存在...
    • 是的,可惜没有内置函数。
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多