如何从 Android 删除 Firestore 集合

2024-01-10

Issue

我正在寻找一个临时解决方案来从客户端删除集合以进行概念证明。我最终将按照建议将其重构到服务器上。

我添加了删除所有特定 Firestore 用户帐户信息的功能,包括他们在应用程序中保存的内容集合。根据Firestore 文档 https://firebase.google.com/docs/firestore/manage-data/delete-data#collections客户端没有规定的方法来执行此操作,因为建议在服务器上处理此操作。


要从 Cloud Firestore 数据库中删除整个集合或子集合,您需要检索该集合或子集合中的所有文档并将其删除。

如果您有较大的集合,您可能需要小批量删除文档以避免内存不足错误。因此,您应该重复此过程,直到删除整个集合或子集合。

即使 Firebase 团队不推荐删除操作(因为它会对安全性和性能产生负面影响),您仍然可以执行此操作,但仅限于以下情况:small collections。如果您需要删除整个 Web 集合,请仅从受信任的服务器环境中执行此操作。

对于 Kotlin,请使用以下函数:

private fun deleteCollection(collection: CollectionReference, executor: Executor) {
    Tasks.call(executor) {
        val batchSize = 10
        var query = collection.orderBy(FieldPath.documentId()).limit(batchSize.toLong())
        var deleted = deleteQueryBatch(query)

        while (deleted.size >= batchSize) {
            val last = deleted[deleted.size - 1]
            query = collection.orderBy(FieldPath.documentId()).startAfter(last.id).limit(batchSize.toLong())

            deleted = deleteQueryBatch(query)
        }

        null
    }
}

@WorkerThread
@Throws(Exception::class)
private fun deleteQueryBatch(query: Query): List<DocumentSnapshot> {
    val querySnapshot = Tasks.await(query.get())

    val batch = query.firestore.batch()
    for (snapshot in querySnapshot) {
        batch.delete(snapshot.reference)
    }
    Tasks.await(batch.commit())

    return querySnapshot.documents
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Android 删除 Firestore 集合 的相关文章

  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo
  • 带有一、二和三个按钮的 Android 警报对话框

    我不经常发出警报 但每次发出警报时 我都会花一些时间来阅读文档 https developer android com guide topics ui dialogs html并弄清楚如何去做 由于我现在不得不这样做几次 所以我将在下面写一
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • 如何为发布而不是调试创建密钥库?扑

    我按照使用此网站部署 flutter 的步骤进行操作https flutter io android release https flutter io android release 当我运行 flutter build apk 时出现此错
  • 调整浮动操作按钮的图标大小(fab)

    The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp So the space between i
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • Android 应用程序中的 Eszett (ß)

    我的 res layout activity 文件中的德语 字符在我的应用程序中自动转换为 ss 即使我将语言和键盘设置为德语 它仍然不会显示 Android 中可以显示 吗 edit
  • 使用 gradlew assembleRelease 从 React Native 创建发布 apk 时出现错误

    我想发布 apk 但我收到错误 文件已存在 mkdir D mobile 它在 d 驱动器中生成名为 mobile 的文件 删除文件后 再次执行 gradlew assembleRelease 创建该文件并抛出错误 任务 app bundl
  • 如何检查 Android 中连接的 wifi 网络是否处于活动状态

    如何自动检查android中连接的WiFi网络上的互联网是否处于活动状态 我可以检查 wifi 是否已启用或 wifi 网络是否已连接 但我不确定如何检查互联网是否已连接 这可能吗 private boolean connectionAva
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 菜单在片段的 onCreateOptionsMenu 处多次膨胀调用

    我使用 Fragments 当我切换到嵌套 Fragment 时 它实现了public void onCreateOptionsMenu Menu menu MenuInflater inflater 当我到达该嵌套片段时 我的菜单会多次膨
  • 使用 PhoneGap 使 Android 应用程序易于访问(对于残障人士)

    有人有过使用 PhoneGap 使 Android 应用程序可访问的经验吗 至少我们需要使我们的应用程序符合第 508 条规定 我尝试实现一些标准的辅助功能 文本框标签 向 div 添加标题属性等 但是 当在 Android 中使用 Tal
  • 在 Android 中调整可绘制对象的大小

    我正在为进度对话框设置一个可绘制对象 pbarDialog 但我的问题是我想每次调整可绘制的大小 但不知道如何调整 这是一些代码 Handler progressHandler new Handler public void handleM
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • Android:AsyncTask ProgressDialog 将不会在 ActivityGroup 中打开

    我试图在轮询我的服务器时打开一个进度对话框 该类是一个 ActivityGroup 因为它嵌套在选项卡栏中 为了将视图保持在框架内 需要 ActivityGroup 这是我的 ActivityGroup 类的声明 public class
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈

随机推荐

  • 按名称读取 javascript cookie

    我已经使用设置了一个cookie document cookie MYBIGCOOKIE value expires now toGMTString path 现在该网站上设置了 5 到 10 个 cookie 有没有办法通过名称检查该 c
  • 如何使用 Windows 身份验证在 IIS 上授权 CORS 预检请求

    我在 ASP net Core 2 Windows 身份验证 上有一个 API 在 Angular 上有一个前端 我做了一个 cors 配置来从 SPA 角度查询我的后端 但由于预检而被阻止 他被 IIS 服务器拒绝 因为他没有标识信息 错
  • 更改 play.google.com/apps/publish/ 中的隐私政策 URL

    I entered the wrong URL in Privacy Policy URL box and published the app in alpha release App is now Pending publication
  • 有没有专门的方法来获取 python `Enum` 中的项目数量?

    说我有这样一条蟒蛇Enum class from enum import Enum class Mood Enum red 0 green 1 blue 2 有没有一种自然的方法来获取项目总数Mood 就像不必迭代它 或者添加额外的n项目
  • 您不能多次定义关联名称“链接”

    您好 提前谢谢您 我在 Magento 2 3 的产品页面中出现错误 您不能多次定义关联名称 链接 trace 0 您定义的关联名称 链接 不能超过 一次 1 0 home buybionette public html vendor ma
  • 如何制作浮动控件

    我想创建一个控件 该控件 可能 浮动在其包含表单的边界之外 这可能吗 我可以怎样做呢 这与上下文菜单的功能非常相似 只是我需要能够向其中添加其他控件 例如按钮和图像 您想要一个 FormBorderStyle 设置为 None 的表单 如果
  • 如何在 Android Studio IDE 中自定义硬换行垂直线以进行代码格式化

    当我应用 格式化代码 时 即使我的屏幕有足够的空间将其显示在一行上 我的代码行也会自动向下行 多行 我发现这取决于垂直线 图像中的红色 我怎样才能删除这条线或加宽它 我的语言是 Dart 您可以禁用该线路文件 gt 设置 gt 编辑器 gt
  • 我必须以编程方式从 Android 应用程序的 manifest.xml 中检索权限组

    我想以分组方式列出设备上安装的每个应用程序所获取的权限 请看看这个 我希望这对你有帮助 private static final int REQUEST PERMISSIONS 10 Override protected void onCr
  • 从 PHP 查询时,视图内的 Postgresql regexp_matches 始终返回 null

    我有与此类似的观点 CREATE OR REPLACE VIEW regexp test AS SELECT regexp matches decode NTB4 base64 text d x 当我从 pgAdmin 查询视图时 按预期返
  • 代码中的注释有标准格式吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道人们在代码中是否有标准的注释格式 不是方法或类的 xml 注释 而是注释within一个方法 也可以看看 是否有注释 C 代码的标准 如
  • 从代码隐藏访问 div 标签

    我正在使用 asp net 和 c 我有一个div在我的应用程序中标记class something 我需要访问这个某物代码隐藏中的类 我该怎么做 Code div class something somecode div Note 我想要
  • JavaScript:forEach 循环中的奇怪行为

    我的代码如下所示 someArray forEach x gt do something console log calling api for x callAnHttpApiAsync sleep 10 http api 调用是异步的 但
  • 无法在 Spring4D 中使用带有比较器的默认参数值

    我不确定这是否是一些通用问题 还是因为 Spring4D 实现 但我不能使用默认参数值来创建比较器 type TMyClass class class function MyComparer AParam Boolean False ICo
  • 在 Laravel Eloquent 模型中创建动态命名的变体

    我有一个日期字段列表 所有这些字段的变异器都有相同的逻辑 我想将此功能提取到一个特征中 以便将来我需要的只是在模型中创建一个日期字段数组并使用该特征 像这样的事情 foreach dates as date dateCamelCase th
  • 从 Maven 运行 Gradle

    我正在寻找一些 Maven 的 Gradle 执行器插件 类似于 Maven ant run 插件 谷歌没有提供帮助 难道这样的插件不存在吗 我应该尝试这个 https github com if6was9 gradle maven plu
  • 实现docker容器按需启动

    情况 大量重型 docker 容器会在一段时间内定期受到攻击 然后在较长时间内保持未使用状态 希望 按需启动容器 就像 systemd 通过套接字激活启动容器一样 并在空闲一段时间后停止它们 不visible最终用户的停机时间 Option
  • 忘记是行不通的

    如果我尝试从此集合中删除某个项目 examples Example where example data example gt get 通过做 examples gt forget 20 它不会从集合中删除该项目 我仍然取回原来存在的所有项
  • 如何将自定义 Java 类转换为 Spark 数据集

    我无法找到将测试对象列表转换为 Spark 中的数据集的方法 这是我的课 public class Test public String a public String b public Test String a String b thi
  • Brave/Chrome 浏览器中图像周围出现不需要的边框半径角

    我尝试在容器内显示一个简单的图像border radius 5px 但角落处似乎有一个细边框的轮廓 您需要仔细查看下图 如何避免这些角边框 cover margin 1em padding 1em image wrapper height
  • 如何从 Android 删除 Firestore 集合

    Issue 我正在寻找一个临时解决方案来从客户端删除集合以进行概念证明 我最终将按照建议将其重构到服务器上 我添加了删除所有特定 Firestore 用户帐户信息的功能 包括他们在应用程序中保存的内容集合 根据Firestore 文档 ht