【发布时间】:2019-01-25 05:08:28
【问题描述】:
我需要在 Firestore 中删除非常大的集合。
最初我使用客户端批量删除,但是当文档发生更改并开始不鼓励使用 cmets 时
不建议从 iOS 客户端删除集合。
不建议从 Web 客户端删除集合。
不建议从 Android 客户端删除集合。
https://firebase.google.com/docs/firestore/manage-data/delete-data?authuser=0
我按照文档中的建议切换到云功能。删除文档时会触发云功能,然后按照“NODE.JS”部分的上述链接中的建议删除子集合中的所有文档。
我现在遇到的问题是云功能似乎能够管理每秒大约 300 次删除。云功能的最大运行时间为 9 分钟,我可以通过这种方式管理多达 162000 次删除。但是我要删除的集合目前有237560个文档,这使得云功能大约一半超时。
我无法在父文档上使用 onDelete 触发器再次触发云函数,因为该函数已被删除(触发了函数的初始调用)。
所以我的问题是:在 Firestore 中删除大型集合的推荐方法是什么?根据文档,它不是客户端而是服务器端,但推荐的解决方案不适用于大型集合。
谢谢!
【问题讨论】:
-
你有后台吗?使用 let say nodejs admin-firebase 时我没有看到任何限制。
-
后端是云函数。用户需要能够通过应用删除非常大的集合。
标签: firebase google-cloud-firestore google-cloud-functions