使用 Firestore 进行多路径更新

2024-03-21

我在所有有关 Firestore 的文章中都提到,它比 Realtime Firebase 需要更少的非规范化。我想这是因为它是一个文档数据库,您可以在其中指向特定文档并仅检索该数量的数据(?)。

但是,我想知道如何管理非规范化仍然有用的情况(例如,我们可以通过在其他文档上存储相同的值来保存对包含完整信息数据的文档的查询)。如果需要更新该值,是否有类似实时 Firebase 多路径更新(更新每个文档的值)之类的东西来解决此问题?


我认为你想说的是“firestore 比实时数据库需要更少的非规范化”(两者都是负责存储数据的 Firebase 产品)”。我认为这种说法不一定正确,因为这一切都取决于数据的架构。 Firestore 强制您遵守一些良好实践,但这并不意味着您可以在实时数据库中获得类似的架构。

更新非规范化数据

您可以使用批量写入更新位于不同路径的非规范化数据。但请注意,您最多只能在一个批次中更新 500 个实体。

如果不需要读取操作集中的任何文档,则可以将多个写入操作作为包含 set()、update() 或 delete() 操作的任意组合的单个批处理来执行。一批写入以原子方式完成,并且可以写入多个文档。

示例来自Firebase Firestore 文档 https://firebase.google.com/docs/firestore/manage-data/transactions

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

// Set the value of 'NYC'
var nycRef = db.collection("cities").doc("NYC");
batch.set(nycRef, {name: "New York City"});

// Update the population of 'SF'
var sfRef = db.collection("cities").doc("SF");
batch.update(sfRef, {"population": 1000000});

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

// Commit the batch
batch.commit().then(function () {
    // ...
});

Note:代码可能不清楚,但在 Firestore 上不会执行任何写入操作,直到commit方法被调用。

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

使用 Firestore 进行多路径更新 的相关文章

  • Firebase 数据库 onWrite 的 Cloud Functions 触发两次

    您好 我正在开发一个通知系统 但我在删除已处理的通知数据时遇到问题 这onWrite事件侦听器被触发两次 从而产生两个通知 您能帮我找到解决方法 以便 onWrite 事件侦听器不应该被触发两次吗 删除已处理的数据很重要 exports s
  • Firebase 令牌未生成

    我得到的令牌未生成 onTokenrefresh 没有调用 谁能帮忙 它已连接到 firebase 但令牌仍然没有生成 public class MyFireBaseInstanceId extends FirebaseInstanceId
  • Flutter firestore插件无法通过where和isEqualTo的组合来获取数据

    我在 Firestore 中有一个名为 trips 的集合 数据格式是这样的 我正在尝试使用下面的代码访问该集合的文档 第一种方式 try Firestore instance collection trips where createdB
  • 我是否需要扩展 FirebaseInstanceIdService 才能订阅 FCM 主题?

    我想从客户端 android 应用程序 管理主题订阅 我目前正在 onCreate 活动中执行此操作 我想知道正确的方法是否是在 InstanceIdService onTokenRefresh 或任何方便的时间 单击按钮等 订阅 取消订阅
  • 无法解析以下类的超类型

    I have android app in kotlin这给了我这个错误 错误 无法解析以下类的超类型 请确保类路径中具有所需的依赖项 com google firebase auth FirebaseAuth 类 未解析的超类型 com
  • 无法将项目部署到 firebase

    我尝试将我的应用程序部署到 firebase 但失败了 firebase 部署 project af2test 您的 CLI 身份验证需要更新才能利用 新功能 请运行 firebase login reauth 错误 无法授权访问项目 af
  • 在设置中禁用推送通知后,推送通知是否会发送到 Android 手机?

    在 Android 中 如果我们使用操作系统设置禁用应用程序通知 fcm gcm 是否仍会将通知发送到设备 如果发送到设备 通知是否会传递到应用程序 还是操作系统阻止了它 device token是否失效 我假设当我们禁用通知时 Andro
  • 在 flutter 中使用 Cloud Firestore 创建无限列表

    我目前正在将 Cloud Firestore 与 Streambuilder 小部件一起使用 以便使用 Firestore 文档填充 ListView 小部件 new StreamBuilder
  • Firebase Function 从其他文件导入函数 - javascript

    我正在使用 javascript 构建 firebase 函数 现在我有很多内部调用函数 我计划将这些函数移动到不同的文件中 以避免 index js 变得非常混乱 下面是当前的文件结构 functions index js interna
  • 如何在列表视图中滚动添加更多项目?

    这里的代码当前加载了存储在 Firestore 集合中的所有啤酒 我如何最初只加载 10 个啤酒 然后当用户向下滚动并到达 10 个啤酒列表的末尾时 它应该加载最后一次酿造后还有 10 杯 并且酿造应根据时间戳进行排序 class Brew
  • Firebase无法组合调用 equalTo() 和 startAt() [重复]

    这个问题在这里已经有答案了 我有一个 Firebase 数据库 我正在尝试查询 但是我在运行时收到错误消息 java lang IllegalArgumentException Can t call equalTo and startAt
  • Firestore 中的多租户

    关于基于子集合值查询数据的实际限制 在 Firestore 中管理多租户的建议方法是什么 我希望能够检索和限制对与用户所属实体 公司相关的数据的访问 数据结构示例 companies companyId users companies co
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • 如何解决 Firebase AuthUi 中无法找到显式活动?

    使用 firebase UI 时 我无法找到显式活动类 com firebase ui auth KickoffActivity protected void onCreate Bundle savedInstanceState super
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销
  • Flutter - 名称为 [DEFAULT] 的 FirebaseApp 不存在

    我正在使用 firebase 身份验证系统和 Firestore 开发一个 flutter 应用程序 我工作了3个月 之前没有遇到过这个错误 现在我在 Play 商店上发布了我的应用程序 并且我发现使用模拟器的调试版本也出现此错误 我认为已
  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • 谷歌云功能发送重复通知

    我有一个发送主题通知的 gcf 我从管理 Android 应用程序触发该功能 一切都按预期工作 但突然该函数发送通知两次 有时三次 谷歌云上的函数日志显示该函数已发送一条通知 它只打印一行 定制发送成功 但 Android 应用程序会收到多
  • 使用 Hooks 从 React Native 中的 Firebase 实时数据库获取的数据未显示在屏幕上

    我最近开始在 React Native 中使用 Hooks 并尝试从 Firebase 实时数据库获取数据并将其呈现在 FlatList 中 数据以对象格式显示在控制台上 但它不起作用 它没有呈现在屏幕上 我究竟做错了什么 我怎样才能让它正
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef

随机推荐