获取Firestore中已删除文档的ID

前卫新手

我收藏了数千份文件。这些文档包含带有内部文档的子集合。现在,我删除了许多最高级别的文档。

结构体: MyCollection => MyDocument => MySubcollection => MySubdocument

现在我意识到,这些文件已删除(在任何查询中均未显示),但是子集合及其文档仍然存在。现在,我不确定如何删除它们,因为我不知道已删除文档的ID。

当我尝试通过仅向我的收藏夹发送查询以读取所有文档来查找ID时,(根据设计)已删除的文档不再包括在内。那么,我现在如何找出他们的ID来删除其子集合?

感谢您的任何建议!

雷诺·塔内克(Renaud Tarnec)

这完全取决于您的确切目标。

如果你想删除所有的在文档MyCollection集,包括所有的文件,所有的子集,您可以用火力地堡CLI使用以下命令:

firebase firestore:delete MyCollection -r

firebase firestore:delete --help更多选择。

当然,这只能由Firebase项目的所有者完成。


如果要允许其他用户从前端执行相同的操作(即,所有文档,包括所有子集合),则可以使用“删除带有可调用云函数的数据”部分详细介绍的技术。该文档。

如本文档所述:

您可以firestore:delete在Firebase命令行界面(CLI)中利用该命令。您可以使用该firebase-tools软件包将Firebase CLI的任何功能导入到Node.js应用程序中。

Firebase CLI使用Cloud Firestore REST API查找指定路径下的所有文档,并将其分别删除。此实现不需要您的应用程序的特定数据层次结构知识,甚至可以查找和删除不再具有父级的“孤立”文档。


如果您只想删除集合中文档的一个子集以及子集合中的文档,则MyCollection可以使用与上述相同的方法以及这些文档的路径,例如:

firestore:delete MyCollection/MyDocument -r

最后,如果您的问题是您已经删除了“父”文档,并且您不知道如何删除(孤立)子集合中的文档(因为您不知道父ID),则可以使用集合组查询来查询所有MySubcollection子集合,并检测父文档是否存在。以下代码可以用JavaScript达到目的。

  const db = firebase.firestore();
  const parentDocReferences = [];
  const deletedParentDocIds = [];

  db.collectionGroup('MySubcollection')
    .get()
    .then((querySnapshot) => {
      querySnapshot.forEach((doc) => {
        console.log(doc.id);
        console.log(doc.ref.parent.parent.path);
        parentDocReferences.push(db.doc(doc.ref.parent.parent.path).get());
      });
      return Promise.all(parentDocReferences);
    })
    .then((docSnapshots) => {
      docSnapshots.forEach((doc) => {
        console.log(doc.id);
        console.log(doc.exists);
        if (!doc.exists && deletedParentDocIds.indexOf(doc.id) === -1) {
          deletedParentDocIds.push(doc.id);
        }
      });
      
      // Use the deletedParentDocIds array
      // For example, get all orphan subcollections reference in order to delete all the documents in those collections (see https://firebase.google.com/docs/firestore/manage-data/delete-data#collections)
      deletedParentDocIds.forEach(docId => {
         
        const orphanSubCollectionRef = db.collection(`MyCollection/${docId}/MySubcollection`);
        // ...
        
      });
      
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Firestore中的空文档是否已删除?

来自分类Dev

angular 7中的firestore如何获取文档ID

来自分类Dev

如何在集合中获取文档ID的列表而不在Firestore中获取文档的内容?

来自分类Dev

在Cloud Firestore中删除文档

来自分类Dev

pouchDB中已删除的文档未删除

来自分类Dev

Firestore / Vuejs:无法从Firestore文档中删除

来自分类Dev

如何从Firestore中的文档ID数组中获取所有子集合文档

来自分类Dev

从文档引用数组中获取Firestore文档

来自分类Dev

在多个文档ID中的Firestore

来自分类Dev

如何使用Documentum中的DQL获取机柜中已删除的文档列表?

来自分类Dev

如何从vuejs和firestore获取文档的ID?

来自分类Dev

Cloud Firestore查询以获取文档ID,Flutter

来自分类Dev

Android Firestore 上传后获取文档 ID

来自分类Dev

从Firestore中的文档中删除字段

来自分类Dev

删除Firestore集合中的所有文档

来自分类Dev

在flutter中从cloud_firestore删除文档

来自分类Dev

Google Firestore查找已删除文档的已删除子集合

来自分类Dev

如何从Cloud Firestore中获取user.uid等于flutter中的文档ID的数据?

来自分类Dev

从ODOO Sever获取已删除的记录ID

来自分类Dev

在Firestore Cloud功能中获取文档

来自分类Dev

Firestore从不同的文档中获取价值

来自分类Dev

无法在Firestore中获取文档(React Native)

来自分类Dev

C#FireStore,从文档中获取值

来自分类Dev

从Firestore文档获取的MapView中显示标记

来自分类Dev

如何获取firestore集合中的文档数

来自分类Dev

Firestore 从文档的内部数组中获取数据

来自分类Dev

在 Firestore 中按文档顺序获取定位

来自分类Dev

从 Firestore 文档中获取字段

来自分类Dev

获取详细信息或检索已删除的注释文档

Related 相关文章

热门标签

归档