google-cloud-firestore - Firestore - 在请求但未找到文档或读取过期文档时触发?
问题描述
我有一个应用程序,其中向用户显示的所有数据都是从 firestore 文档接收的。这些文档包含用户生成的内容或从 3rd 方 API 导入的数据。导入的文档包含过期时间戳。应用程序中的每个屏幕都映射到一个或多个 Firestore 文档路径。
如果应用程序请求并订阅特定路径的文档,但未找到该文档,或者它已过期,我想要一个云功能从外部 API(重新)导入文档,所以我可以确定更新的数据将很快出现在应用程序中。
但是,我找不到文档读取或未找到操作的触发器,这将是显而易见的选择。
如果无法触发读取功能,这里有哪些替代解决方案?
我正在使用 react/redux/firestoreConnect 来获取数据。
解决方案
我了解您以某种方式从您的应用程序中查询 Firestore 数据库以查找一个或多个文档,以防万一
- 文档不存在,或者
- 文档存在,但已达到过期日期(存储在文档中)
您想触发一个“从外部 API (重新)导入文档”的云函数。
一种方法是当您对 Firestore 文档的查询未返回任何文档或返回具有过期日期的文档时,从您的应用程序触发Callable Cloud Function 。
然后在 Cloud Function 中,您执行 API 调用,更新文档并向应用返回“成功”标志,以指示它可以重新获取 Firestore 文档,因为该文档已被(重新)导入。
换句话说,您从应用程序触发(重新)导入,而不是基于 Cloud Function 后台触发器。
我希望这会有所帮助,如果需要,请随时询问更多详细信息/方向!
推荐阅读
- arrays - 如何获取数组中元素的位置
- r - 为什么 Dunn.package 和 DescTools 中的 Dunn 测试报告不同的结果?
- java - 在目标 JAR 中捆绑本地 JAR 依赖项
- java - 如何根据另一个类更改状态更新进度条?
- docker - 使用 asyncData 获取 nuxt.js 页面的 http://api:1337/games net::ERR_NAME_NOT_RESOLVED
- go - 如何将子目录/子域放在另一台服务器(或共享主机)
- java - 使线在相同的位置 - “\t”
- reactjs - 纯组件、展示组件和哑组件都是一回事吗?
- vector - 比较一个文档的向量和一个单词
- javascript - Jquery'On'方法不适用于表上动态附加的行