在 Firestore 中删除集合 - Flutter/Android

Posted

技术标签:

【中文标题】在 Firestore 中删除集合 - Flutter/Android【英文标题】:Deleting a collection in Firestore - Flutter/Android 【发布时间】:2020-11-29 10:46:05 【问题描述】:

我是 firebase 的新手,所以如果这感觉像是文档中或其他问题已回答的问题,我深表歉意!

现在我将用户数据保存在 firestore 中,当用户删除他们的帐户时,我也希望将其删除,但 Firestore 文档说这是删除我们的集合的唯一方法:

要删除 Cloud Firestore 中的整个集合或子集合, 检索集合或子集合中的所有文档并删除它们。

不建议原生开发者这样做,但我想到了一个想法:

所以 firestore 会用旧数据覆盖新数据,所以如果我们设置一个新集合(用户根),它有一个没有字段的单个文档,然后删除它,它将是读/写有效的只是覆盖所有预先存在的数据。

我还没有尝试过这个想法,但是如果有人有更好的方法来删除 firestore 中的集合,请写一个答案!

参考链接:

https://firebase.google.com/docs/firestore/manage-data/delete-data#collections https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

【问题讨论】:

【参考方案1】:

无法“设置新集合”。您只能读取、写入和查询集合中的单个文档。

您在此处引用的有关删除集合的建议是 absolutely true - 您必须单独查询、迭代和删除每个文档。对于 Web 和移动客户端,没有解决方法。

如果您希望为您的应用添加后端,您可以use the firebase-tools library in a callable Cloud Function 以简化此过程,但该库仍遵循此过程删除集合中的所有文档。

【讨论】:

所以我让用户从根目录开始他们的收藏,每个用户有 4 个必需的文档,其中有许多子集合和文档,所以当我查询这 4 个文档时,我会阅读所有子系列也是如此?因为就总 READ (s) 而言,这对我来说太贵了? 不,查询很浅,并且只读取直接集合中的文档。如果您还想要这些文档,则必须单独查询子集合。 那么如果我不查询子集合(删除它们),它们会被删除还是移动到根集合? 不,删除也很浅。您可以尝试所有这些东西,并亲眼看看它是如何工作的。

以上是关于在 Firestore 中删除集合 - Flutter/Android的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Flutter 在 Firestore 中删除集合中的所有文档

在 Firestore 的集合中删除所有文档时返回所有文档

如何从 Firestore 中删除集合或子集合?

删除 Firestore 集合中的所有文档

使用 Dataflow 和 Java 删除 Firestore 集合

再次删除带有文档和集合的集合(firestore react native)