【问题标题】:Firebase - Targeting Specific Firestore Document Field with Cloud FunctionsFirebase - 使用 Cloud Functions 定位特定的 Firestore 文档字段
【发布时间】:2018-03-16 12:40:12
【问题描述】:

将 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 的工作方式吗?是否有一个优雅的解决方法?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 听起来像是一个循环。我希望很快就可以仅在字段上触发。
    • 提醒一下,实时数据库可以与 Cloud Firestore 并行使用。也许将需要更精确地触发 Cloud Functions 的数据资源放在实时数据库中可能是一种解决方案。我个人发现过多的函数调用不是问题。 Firebase 提供了大量的资源,而且扩展起来非常便宜。但是,每个应用程序都是不同的。
    • 嗨。 Firestore 仍然是这种情况吗?字段值更新不能触发函数?
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 2018-08-28
    • 2023-04-03
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2019-02-26
    • 2021-03-16
    相关资源
    最近更新 更多