Firebase - 使用云功能定位特定的 Firestore 文档字段

2023-11-27

将云函数与 Firebase 实时数据库结合使用时,您可以使用云函数定位特定字段。例如,给定这个 JSON 结构,我可以定位 user1 的电子邮件字段随('/user/{userId}/email').onUpdate云功能。

{ "user": { "user1": { "name": "John Doe", "phone": "555-5555", "email": "[email protected]" } } }

现在,使用Firestore,我似乎无法定位特定字段,只能定位文档。如果是这种情况,针对电子邮件字段的 Firestore 云功能必须如下所示,('/user/{userId}').onUpdate,并在每次出现任何文档时触发user集合发生了变化。这将导致大量浪费的云函数被触发。这就是 Firestore 的工作方式吗?是否有一种优雅的解决方法?


您是对的,由于不同的数据模型,Cloud Firestore 只允许您在文档级别事件而不是字段级别触发 Cloud Functions。

一种方法是将电子邮件存储在单独的文档中(例如,在名为“电子邮件”的子集合中),因此更新电子邮件是唯一会触发的更改。但这确实需要您在每次需要电子邮件时阅读额外的文档。

另一种类似的方法是仍然将其保留在同一个文档中,但也将其写入子集合中作为第二次写入以触发该函数。使用电子邮件作为我想要的文档,并在文档中添加时间戳字段,以便轻松清理旧文档(选择要删除的最旧的电子邮件文档,甚至可以在功能中选择)

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

Firebase - 使用云功能定位特定的 Firestore 文档字段 的相关文章

随机推荐

  • Spring@计划于每天凌晨 4:00 至 4:30 之间的随机分钟开始

    正如问题标题所述 我需要设置 Spring Scheduler 它将运行方法以每天凌晨 4 点左右将某些内容从数据库加载到内存中 问题是我有该服务器的多个实例 我不希望所有实例同时开始执行 因为它会减慢数据库的速度 所以我希望时间是 4 0
  • 如何将 UWP 目标添加到现有 Xamarin Forms 项目?

    我有一个现有的 Xamarin Forms 应用程序 设置为针对 Android 和 iOS 构建 我想添加 UWP 目标 以便可以查看应用程序在 Windows 上的执行情况 我想我可以做到这一点 而无需为 Windows 创建新的 UI
  • Egit 将 Eclipse 项目文件夹添加到 git 存储库

    我在 BitBucket 上创建了一个新的空 git 存储库 现在我想将其链接到 Eclipse 我将存储库添加到 Git Repositories 视图中 并创建了一个同名的新项目 我选择 团队 gt 共享项目 然后提交并推送到上游 现在
  • 更新 RestKit 'lcl_RK.h' 文件在 RKLog.h 中找不到

    我在 Xcode 7 1 中安装 RestKit v0 25 0 和 CocoaPods v0 39 并遇到导入问题 当我使用 CocoaPods v0 38 2 时 一切都很棒 找不到 RKHTTPUtilities h 文件 它在 PO
  • numpy数组赋值问题

    我在使用 Numpy 的 Python 2 6 5 中遇到了一个奇怪的问题 我分配一个 numpy 数组 然后将一个新变量等同于它 当我对新数组执行任何操作时 原始数组的值也会发生变化 这是为什么 请看下面的例子 请启发我 因为我对 Pyt
  • R 求和向量列表中的元素 X

    我刚刚开始做一些 R 脚本 但我无法解决这个问题 我有一个向量列表可以说 myListOfVector lt list c 1 2 c 1 2 c 1 2 c 1 2 我想要的是列表中每个向量的每个 X 元素的总和 基于元素的位置 这样 如
  • 在c中生成具有特定分布的随机数

    我需要一个具有生成随机数 给定平均值 标准差以及使用三种分布之一 指数分布 正态分布或统一分布 的函数的库 即使三者之一也会有帮助 我正在寻找这样的东西 http www codeproject com KB recipes zigurat
  • 在 moment.js 中获取该月的最后一个星期一

    有没有办法使用 moment js 获取该月的最后一个星期一 我知道我可以通过以下方式得到月底 moment endOf month 但上周一怎么样 你快到了 您只需要添加一个简单的循环来逐天向后移动 直到找到星期一 result mome
  • BeginAccept 方法后无法关闭套接字

    我有一个 C 程序 在其中创建一个套接字 绑定它 开始监听 然后使用 beginaccept 但是当我尝试关闭 关闭套接字时 我从 beginaccept AsyncCallback 方法中得到异常 private void start l
  • 为什么我的 Java 中 char 和 int 之间的比较不起作用?

    char c 0 int i 0 System out println c i 为什么这总是返回 false 虽然这个问题很不清楚 但我很确定发帖者想知道为什么会这样打印false char c 0 int i 0 System out p
  • 使用扭曲和试用启动两个等效单元测试时,ReactorNotRestartable

    我有两个测试班 TrialTest1 and TrialTest2 写在两个文件中 test trial1 py and test trial2 py 基本相同 唯一的区别是类名 from twisted internet import r
  • javascript中引用和实例的区别

    有时我听到人们说 对象的引用 有些人说 对象的实例 有什么不同 A variable将举行参考 to an instance一个物体的 实际的对象是一个instance 用于访问对象的一个 或多个变量保存参考 to it
  • 使用 HLS 视频时,仅在 iOS 13 上使用 AVPlayerViewController 和 AVPlayer 时出现视频播放问题

    我有一个可以播放视频的应用程序 它与 iOS 11 12 和 iOS 13 兼容 在 iOS 11 和 12 上 视频播放可以正常使用AVPlayerViewController甚至只是AVPlayerLayer 然而 在 iOS 13 上
  • 从Python中的BackgroundSubtractorMOG2获取背景模型

    我需要获得高斯与 opencv 混合的背景模型 我知道 C 中有一个名为 getBackgroundImage 的方法 我搜索了是否可以在 python 界面中获取它 但没有得到好的结果 我尝试了opencv 3 0 0 dev 因为它有B
  • 如何获取BrowserWindow的url?

    这是一个非常基本的问题 在 Electron 中 如何检查 BrowserWindow 的 url 文件名 let win app on ready gt win new BrowserWindow win loadFile path jo
  • 将选项卡式文本转换为 html 无序列表?

    我是一名初学者程序员 所以这个问题可能听起来微不足道 我有一些文本文件包含制表符分隔的文本 例如 A B C D E 现在我想从中生成无序的 html 列表 其结构为 ul li A ul li B li li C ul li D li l
  • 禁用 IE6 客户端的 GZIP 压缩

    如果用户的浏览器是 IE6 它使浏览器挂起 5 分钟 并且在较大网站的几个页面中 我们需要有条件地禁用 GZIP 压缩 服务器是 IIS7 并且打开了静态内容压缩 如果用户代理不是 Mozilla 4 0 则希望压缩继续工作 ASPX 代码
  • 运行时出现NoClassDefFoundError,但类在classes.dex中,有什么提示?

    我已经包含了一个从 Eclipse Android 项目构建的 JAR 文件 并且我在 Android Studio 项目中引用它 如下所示 compile files libs libraryproject jar 这有效 并且我能够自动
  • NHibernate Fluent 和命名查询

    我正在使用 Nhibernate 和 Fluent 现在我想调用一些存储过程并使用命名查询 我创建了一些 xml
  • Firebase - 使用云功能定位特定的 Firestore 文档字段

    将云函数与 Firebase 实时数据库结合使用时 您可以使用云函数定位特定字段 例如 给定这个 JSON 结构 我可以定位 user1 的电子邮件字段随 user userId email onUpdate云功能 user user1 n