【问题标题】:Firestore - trigger when a document is requested but not found, or when an expired document is read?Firestore - 在请求但未找到文档或读取过期文档时触发?
【发布时间】:2019-09-16 16:21:13
【问题描述】:

我有一个应用程序,其中向用户显示的所有数据都是从 firestore 文档接收的。这些文档包含用户生成的内容或从 3rd 方 API 导入的数据。导入的文档包含过期时间戳。应用中的每个屏幕都映射到一个或多个 firestore 文档路径。

如果应用程序请求并订阅特定路径的文档,但找不到该文档,或者它已过期,我想要一个云函数从外部 API(重新)导入文档,所以我可以确保更新的数据很快就会出现在应用程序中。

但是,我找不到文档读取或未找到操作的触发器,这本来是显而易见的选择。

无法在读取时触发函数,这里有哪些替代解决方案?

我正在使用 react/redux/firestoreConnect 来获取数据。

【问题讨论】:

    标签: google-cloud-firestore google-cloud-functions document-database


    【解决方案1】:

    我了解您以某种方式从您的应用程序中查询 Firestore 数据库以查找一个或多个文档,以防万一

    1. 文档不存在,
    2. 文档存在,但已到过期日期(存储在文档中)

    您想要触发“从外部 API (重新)导入文档”的云函数。

    当您对 Firestore 文档的查询未返回任何文档或返回的文档已过期时,一种方法是从您的应用中触发 Callable Cloud Function

    然后在 Cloud Function 中,您执行 API 调用,更新文档并向应用返回“成功”标志,以指示它可以重新获取 Firestore 文档,因为该文档已被(重新)导入。

    换句话说,您从应用程序触发(重新)导入,而不是基于 Cloud Function 后台触发器。

    我希望这会有所帮助,如果需要,请随时询问更多详细信息/方向!

    【讨论】:

    • 我实际上已经制定了类似于您在此处建议的内容,但我对解决方案并不完全满意。在客户端应用程序中,我正在观察 react-redux-firebase 分派到 redux 商店的操作,然后调用启动重新导入的云函数,当操作告诉我它收到一个为空或过期的文档时。不是最佳解决方案,因为用户会在重新导入文档之前看到旧数据一段时间,所以这就是为什么我正在寻找更多服务器端的东西:)
    • 然后您可以使用您计划在指定时间运行的 HTTP 云函数定期检查文档是否存在并且是最新的,请参阅firebase.google.com/docs/functions/schedule-functions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2019-11-07
    • 2021-11-18
    • 1970-01-01
    • 2016-11-24
    • 2017-08-14
    相关资源
    最近更新 更多