【问题标题】:onWrite trigger for updating RTD branch update time goes into recursion用于更新 RTD 分支更新时间的 onWrite 触发器进入递归
【发布时间】:2020-07-05 22:39:56
【问题描述】:

我想在数据发生变化时更新分支的时间戳,我想出了这段代码

if (!process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === 'gameStateUpdateTime') {
  exports.gameStateUpdateTime = functions.database.ref('/gameStates/{id}')
    .onWrite((change, _context) => {
      return change.after.ref.child('updatedAt').set(new Date().getTime());
    });
}

然而,这会导致一个糟糕的递归。任何想法如何防止递归?

【问题讨论】:

    标签: node.js firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    结果是这样的:

    if (!process.env.FUNCTION_NAME || process.env.FUNCTION_NAME === 'gameStateUpdateTime') {
      exports.gameStateUpdateTime = functions.database.ref('/gameStates/{id}')
        .onWrite((change, _context) => {
          if (change.before.exists() && change.after.exists()) {
            const original = change.before.val();
            const updated = change.after.val();
    
            if (original.updatedAt != updated.updatedAt) {
              return null;
            }
          }
    
          return change.after.ref.child('updatedAt').set(new Date().getTime());
        });
    }
    

    另一种解决方案是将日期保存在不同的分支上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-28
      • 2021-04-24
      • 1970-01-01
      • 2015-07-23
      • 2010-11-08
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      相关资源
      最近更新 更多