如何在 Firestore 中一次创建/更新多个文档

2024-02-20

是否可以仅通过一个请求在 Firestore 中存储多个文档? 使用此循环是可能的,但这会导致列表中的每个项目执行一次保存操作。

for (counter in counters) {
    val counterDocRef = FirebaseFirestore.getInstance()
            .document("users/${auth.currentUser!!.uid}/lists/${listId}/counters/${counter.id}")
    val counterData = mapOf(
            "name" to counter.name,
            "score" to counter.score,
    )
    counterDocRef.set(counterData)
}

来自 Firebase 文档:

您还可以使用 set()、update() 或 delete() 方法的任意组合将多个操作作为单个批处理执行。您可以跨多个文档批量写入,并且批处理中的所有操作都以原子方式完成。

// Get a new write batch
WriteBatch batch = db.batch();

// Set the value of 'NYC'
DocumentReference nycRef = db.collection("cities").document("NYC");
batch.set(nycRef, new City());

// Update the population of 'SF'
DocumentReference sfRef = db.collection("cities").document("SF");
batch.update(sfRef, "population", 1000000L);

// Delete the city 'LA'
DocumentReference laRef = db.collection("cities").document("LA");
batch.delete(laRef);

// Commit the batch
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        // ...
    }
});

Firestore 多个写入操作 https://firebase.google.com/docs/firestore/manage-data/transactions#batched-writes

希望能帮助到你..

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

如何在 Firestore 中一次创建/更新多个文档 的相关文章

随机推荐

  • FEATURE_ACTIVITY_TRANSITIONS 与 FEATURE_CONTENT_TRANSITIONS

    我无法理解这两者之间的区别Window http developer android com reference android view Window html标志 但我不能 100 确定何时需要使用每一个以及为什么 的文档Window
  • 为什么 Flutter 小部件是不可变的?

    我无法理解为什么 Flutter 对象是不可变的 我在 Flutter 文档中尝试过 但没有那么有帮助 如果有人能帮助我解决这个问题 我将不胜感激 另外 我两天前才开始使用 flutter 非常棒 From https api flutte
  • 如何使用python捕获网络流量[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 python 并尝试抓取我的计算机和站点之间的 HTTP s 流量 其中包括所有传入和传出请求 响应 例如图像和外部调用等
  • @ngrx/store 是可观察到的热还是冷?

    我认为它是一个冷可观察的对象 默认情况下 但在代码或文档中找不到对它的引用 抱歉 如果已经问过这个问题 找不到东西 TLDR这是一个热门的观察点 因为动作主题 https github com ngrx platform blob mast
  • 如何在 vscode 中根据自定义的 launch.json 创建模板?

    对于我的项目 我定制了我的启动 json file 如何将自己的自定义启动配置保存为模板 就像C GDB LLDB 模板 这样我每次打开新文件夹 项目 时都可以轻松地重新使用它 我不想将其添加到下面全局启动配置 https code vis
  • 如何订购淘汰赛绑定?

    我正在使用 Knockout js 我陷入了一个有点奇怪的情况 很难解释 但我正在尝试 如果我不清楚 抱歉 我在单个选择列表上使用自定义绑定和选项绑定
  • 什么是缓冲区?什么是缓冲读和缓冲写?

    今天很长一段时间后我听到了 缓冲区 这个词 想知道是否有人可以很好地概述缓冲区以及它在当今世界的重要性的一些例子 缓冲区通常是内存的一部分 其中包含尚未完全提交到其预期设备的数据 在缓冲 I O 的情况下 通常有一个快速设备和一个慢速设备
  • 尝试使用 KMS 解密 Lambda 函数中的密文会导致超时

    使用 AWS CLI 从命令行解密密文时 密文可以顺利解密 aws kms decrypt ciphertext blob fileb encrypted secrets output text query Plaintext region
  • 寻找最少矩形来覆盖一组矩形而不重叠的算法

    我有一组矩形 我想 减少 该组 以便用最少数量的矩形来描述与原始组相同的区域 如果可能的话 我希望它也能很快 但我更关心的是让矩形的数量尽可能少 我现在有一个在大多数情况下都有效的方法 Currently I start at the to
  • 使用正则表达式替换时,如何保留匹配字符串的一部分?

    I have 12 hello mp3 21 true mp3 35 good mp3 等等作为文本文件中列出的文件名 我只需要用空格替换数字前面的那些点 例如 12 hello mp3 gt 12 hello mp3 如果我将正则表达式设
  • 合并和分割重叠的矩形以生成不重叠的矩形

    我正在寻找如下算法 给定一组可能重叠的矩形 所有矩形都 未旋转 可以统一表示为 左 上 右 下 连音符等 它返回一组最小的 非旋转 不重叠的矩形 占据相同的面积 乍一看似乎很简单 但事实证明很棘手 至少要高效地完成 this ideas p
  • http 连接错误

    您好 我正在尝试从下面给出的链接获取数据 http abovestress com app stress fetch all detail php task fetchtimefromdateanduserid track date 201
  • 使用 Apple M1 自制软件安装 ruby​​-odbc gem 时出现“错误:sql.h 未找到”

    上下文 在 Apple M1 上 自制程序的位置是 opt homebrew not the usual usr local macOS Intel usr local macOS ARM opt homebrew 当我安装 ruby od
  • Crashlytics 未对代码进行反混淆

    我是 Crashlytics 的新手 我遇到了一个问题 它没有对我的堆栈跟踪进行反混淆 根据 Crashlytics 的说法 这应该是自动发生的 它应该使用 apk 中包含的mappings txt 文件来解密堆栈跟踪 我对整个过程有一些疑
  • 如何在CMake中指定编译器?

    我想使用 IAR 编译器 我注意到 CMake 已经有一堆关于这个编译器的文件 https github com jevinskie cmake blob master Modules Compiler IAR cmake https gi
  • 如何在打字稿中对模型接口进行单元测试?

    export interface User name string 我如何对上述接口进行单元测试 以便 Karma 可以在代码覆盖率报告中显示它 我已经尝试创建对象并断言一些属性 但没有成功 测试通过了 但 karma 并未在代码覆盖率报告
  • 如何从 main 方法启动 Vertx 3 Verticle?

    如何从 main 方法启动 Verx 3 Verticle 我已经弄清楚如何从单元测试和入门开始guide http vertx io blog my first vert x 3 application 解释如何构建一个胖罐子 但是我如何
  • 处理在 SQL Server 和经典 ASP 中存储为 varbinary 的哈希密码

    All 提前抱歉 对于以下大多数主题 SQL ASP 我都是新手 反正 我有一个非常简单的网络应用程序 要求用户使用用户名和密码登录 前端创建密码的加盐 SHA1 哈希值 并将其 与用户名一起 发布到 ASP 页面 该 ASP 页获取数据
  • R区分批处理模式和交互模式

    我想在我的代码中有一个条件 它允许我区分代码是在批处理模式还是交互模式下运行 通过控制台 它会是这样的 if interactive mode do this else if Batch mode do that 有办法实现这一点吗 感谢您
  • 如何在 Firestore 中一次创建/更新多个文档

    是否可以仅通过一个请求在 Firestore 中存储多个文档 使用此循环是可能的 但这会导致列表中的每个项目执行一次保存操作 for counter in counters val counterDocRef FirebaseFiresto