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

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

将 Cloud Functions 与 Firebase 实时数据库结合使用时,您可以使用 Cloud Functions 定位特定字段。例如,给定此 JSON 结构,我可以使用 ('/user/{userId}/email').onUpdate 云函数来定位用户 1 的电子邮件字段何时更改。

{ “用户”:{ “用户1”:{ "name": "约翰·杜伊", “电话”:“555-5555”, “电子邮件”:“john@gmail.com” } } }

现在使用 Firestore 似乎无法定位特定字段,只能定位文档。如果是这种情况,以电子邮件字段为目标的 Firestore 云函数必须如下所示,('/user/{userId}').onUpdate,并且每次 中的任何文档都会触发code>user 集合已更改。这将导致大量无用的云函数被触发。这就是 Firestore 的工作方式吗?是否有优雅的解决方法?

最佳答案

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

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

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

关于database - Firebase - 使用云功能定位特定的 Firestore 文档字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46576393/

相关文章:

sql-server - 修改 SQL Server 架构集合

PHP - 每次迭代查询单个值或在开始时获取所有值并从数组中检索?

database - Cassandra数据库的最佳实践建模数据

android - 在flutter中的runApp之前Firebase初始化App需要花费大量时间

android - 我会因为看到真实广告(展示次数)而被 AdMob 禁止吗?

database - 两个具有不同用途但具有相同属性/字段的表

MySQL通过外键分区

jquery - 重命名 firebase 中的分支

mysql - 公用事业账单的数据库设计

sql - 从 Postgres 中的子查询构造值的 ARRAY 并在 WHERE 子句中使用它