使用Admin SDK删除时如何在集合中保留项目计数器

时间:2019-09-17 19:28:00

标签: firebase google-cloud-firestore firebase-security

在Firestore中删除项目的功能,即使不存在要删除的项目,也会正确返回。

如果我们批量删除多个元素,并且有一个要更新的集合元素的计数器,那么如果要删除的某些元素不再存在,则计数器会提供较小的数量真正的。

为避免这种情况,我们使用以下Firestore规则:

允许删除:如果存在(/数据库/ $(数据库)/文档/ ...);

问题在于,如果我们在服务器上运行该批处理,则Admin SDK会忽略Firestore规则。

任何不涉及交易的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如何使用侦听删除的云功能?

此方法的工作方式是设置一个侦听器,该侦听器等待特定的集合删除文档。这将是确保删除导致函数运行的好方法,并且该函数可以执行您想要的任何事情(例如,递增/递减等)。

这可能非常简单:

    exports.deletedItem = functions.firestore
               .document('items/{itemId}')
               .onDelete((snap, context) => {

                  const deletedValue = snap.data();
                  // Increment/decrement anything you'd like here.
                  // Perform any number of operations on a confirmed delete
               });