【发布时间】:2021-08-21 20:24:42
【问题描述】:
我有一个 Firebase Cloud 函数,它是由 Firebase 实时数据库中的某些数据的更新触发的。当数据更新时,我想读取数据,对该数据执行一些计算,然后将计算结果保存回实时数据库。它看起来像这样:
exports.onUpdate = functions.database.ref("/some/path").onUpdate((change) => {
const values = change.after.val();
const newValues = performCalculations(value);
return change.after.ref.update(newValues);
});
我担心这可能会造成无限期的更新循环。我在Cloud Firestore Triggers 上看到了一条注释,上面写着:
“任何时候你写入触发函数的同一个文档, 您有创建无限循环的风险。谨慎使用并确保 在不需要更改时安全退出函数。”
所以我的第一个问题是:同样的问题是否适用于 Firebase 实时数据库?
如果是这样,防止无限循环的最佳方法是什么? 我应该比较快照之前/之后、键/值对等吗?
到目前为止我的想法:
exports.onUpdate = functions.database.ref("/some/path").onUpdate((change) => {
// Get old values
const beforeValues = change.before.val();
// Get current values
const afterValues = change.after.val();
// Something like this???
if (beforeValues === afterValues) return null;
const newValues = performCalculations(afterValues);
return change.after.ref.update(newValues);
});
谢谢
【问题讨论】:
标签: node.js firebase-realtime-database google-cloud-functions