何时使用Firebase功能以及何时使用Firestore客户端功能?

时间:2019-08-01 02:05:55

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

我有一个项目,其中我需要与图像一起写入数据,即同时写入Cloud StorageFirestore Database没有批量写入两者Cloud Storage和Cloud Firestore相结合,因此唯一的解决方案是一个接一个地做,即将一件事写到数据库中,一旦成功,再写下一件。

问题是当写入第一个数据成功并且第二个数据失败时,那么我必须还原事务,我认为从客户端执行此操作不好,可能会出现失去互联网连接

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

1 个答案:

答案 0 :(得分:1)

Cloud Functions本质上是使用Admin SDK访问Firebase的小型Node脚本。除了API之外,它们没有其他特殊功能,这意味着它们与在其他地方使用该API具有相同的限制。

使用云功能将减少在相关操作之间出现中断的机会,但是它不会不能消除该机会。

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

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

我承认第二步通常是我稍后添加的内容。第一步已经确保了应用程序无论如何都能正常运行,因此清除只是那时的一些数据存储优化。