将 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/