firebase - 在 Firestore 中删除包含所有子集合和嵌套子集合的文档

标签 firebase google-cloud-functions google-cloud-firestore

如何删除包含所有集合和嵌套子集合的文档? (在函数环境内)

在 RTDB 中,您可以 ref.child('../someNode).setValue(null)这样就完成了所需的行为。

我可以想到两种方法来实现所需的删除行为,这两种方法都有非常可怕的缺点。

  • 创建一个“ super ”函数,它将抓取每个文档并批量删除它们。
    这个函数会很复杂,不容易改变,并且可能需要很长时间的执行时间。
  • 为每个文档类型添加“onDelete”触发器,并使其删除任何直接子集合。您将对根文档调用 delete ,并且删除调用将沿“树”向下传播。由于函数执行的巨大负载,这是缓慢的,可扩展的并且成本高昂。

  • 想象一下,您必须删除一个“GROUP”及其所有子项。 #1 会非常困惑,#2 会很贵(每个文档调用 1 个函数)
    groups > GROUP > projects > PROJECT > files > FILE > assets > ASSET
                                                       > urls > URL
                                        > members > MEMBER
                   > questions > QUESTION > answers > ANSWER > replies > REPLY
                                          > comments > COMMENT
                   > resources > RESOURCE > submissions > SUBMISSION
                                          > requests > REQUEST
    

    是否有一种更高级/更受欢迎/更清洁的方法来删除文档及其所有嵌套的子集合?

    考虑到您可以从控制台执行此操作,这应该是可能的。

    最佳答案

    根据firebase文档:
    https://firebase.google.com/docs/firestore/solutions/delete-collections
    删除带有嵌套子集合的集合可能会在服务器端使用 node-JS 轻松而整洁地完成。

    const client = require('firebase-tools');
    await client.firestore
          .delete(collectionPath, {
            project: process.env.GCLOUD_PROJECT,
            recursive: true,
            yes: true
          }); 
    

    关于firebase - 在 Firestore 中删除包含所有子集合和嵌套子集合的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49286764/

    相关文章:

    javascript - 函数在 Cloud Functions 中返回未定义的预期 Promise 或值

    python - 属性错误 : _nanosecond when updating a datetime in transaction

    firebase - 什么用例有 FirebaseUser 的 reload() 功能?

    node.js - 从实时数据库获取数据 firebase throw 函数

    firebase - 如何解决 TypeError : functions. https.onCall 不是函数?

    firebase - 为什么我在 Firebase Cloud Firestore Emulator UI 中看不到数据?

    swift - 如何将 Firestore 文档映射到结构?

    java - com.firebase.client.ServerValue.TIMESTAMP 响应什么?

    android - 如何创建数组(如果尚不存在),然后将数据附加到Firestore中的数组?

    node.js - 如何编写云函数以使用 SendGrid 发送电子邮件