在Firestore中删除项目的功能,即使不存在要删除的项目,也会正确返回。
如果我们批量删除多个元素,并且有一个要更新的集合元素的计数器,那么如果要删除的某些元素不再存在,则计数器会提供较小的数量真正的。
为避免这种情况,我们使用以下Firestore规则:
允许删除:如果存在(/数据库/ $(数据库)/文档/ ...);
问题在于,如果我们在服务器上运行该批处理,则Admin SDK会忽略Firestore规则。
任何不涉及交易的解决方案吗?
答案 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
});