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

时间:2017-10-05 01:10:41

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

将Cloud Functions与Firebase实时数据库一起使用时,您可以使用云功能定位特定字段。例如,给定此JSON结构,我可以在user1的电子邮件字段使用('/user/{userId}/email').onUpdate云功能更改时进行定位。

{ "user": { "user1": { "name": "John Doe", "phone": "555-5555", "email": "john@gmail.com" } } }

现在使用Firestore,我似乎无法定位特定字段,只能定位文档。如果是这种情况,则定位电子邮件字段的Firestore云功能必须如此('/user/{userId}').onUpdate,并且每次user集合中的任何文档发生更改时都会触发。这将导致大量浪费的云功能触发。这就是Firestore的工作方式吗?有一个优雅的工作吗?

1 个答案:

答案 0 :(得分:6)

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

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

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