java - 何时使用 firebase 函数以及何时使用 firestore 客户端函数?

标签 java firebase kotlin google-cloud-firestore google-cloud-functions

我有一个项目,我需要将数据和图像一起写入,即同时写入 Cloud StorageFirestore Database没有批量写入 Cloud Storage 和 Cloud Firestore 的组合,因此唯一的解决方案是一个接一个地执行,即将一件事情写入数据库,当它成功时再写入下一件。

问题是当写入第一个数据成功而第二个数据失败时,我必须恢复交易,我认为从客户端这样做并不好互联网连接中断

所以我的问题是我是否应该对写入数据库的所有内容使用 Cloud Functions?

最佳答案

Cloud Functions 本质上是使用 Admin SDK 访问 Firebase 的小型节点脚本。它们没有超出 API 的特殊权力,这意味着它们与在其他地方使用该 API 具有相同的限制。

使用 Cloud Function 将减少相关操作之间出现中断的可能性,但它不会消除这种可能性。

这意味着您必须以某种方式处理中断。通常这是一个两步过程:

  1. 确保所有读取数据的代码都能够防止数据不完整。例如,从数据库中读取(下载)URL 后,不要假设它指向的文件存在。由于多种原因(之后被删除、服务不可用等),它可能不存在,所以无论如何这是个好主意。
  2. 定期运行检测不完整数据并清理的脚本。例如,每天运行一个 Cloud Function,获取 Cloud Storage 中所有文件的列表,如果数据库中没有对它们的引用,则将其删除,然后从数据库中读取所有 URL,并检查它们是否仍然存在.

我承认第二步通常是我稍后添加的内容。第一步已经确保应用程序运行良好,因此此时清理只是一些数据存储优化。

关于java - 何时使用 firebase 函数以及何时使用 firestore 客户端函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300967/

相关文章:

java - Android中的SSL session 重用问题(J2SE正常工作)

c# - 必须处理哪些变量? (.NET/ java )

javascript - Uncaught ReferenceError : Firebase is not defined when using with phonegap

android - Firestore 排除数据序列化

kotlin - Kotlin 是否允许 lambda 上的扩展方法?

json - 暴露: How to parse JSON into an Entity class

java - MultiDex 停止运行 Android

java - Android/java - 如何执行该循环等待执行操作

java - Firebase 休息 API 过滤器查询

database - Android Room Persistence 库和 Kotlin