如何处理数据库对接

问题描述 投票:0回答:1

我的用户将需要上传文件,而我的应用程序会将它们存储为base64字符串。 Firestore并未针对将大文件存储在文档中进行优化。所以我有两个选择:

  • 将它们上传到Firebase存储

  • 在集合中的各个文档中切片base64字符串。

它们两者都将要求我的应用程序数据保留对存储或收集ID的引用。

我的难题是:如果上传成功,则将数据发布到Firestore。但是,如果发布失败了怎么办?我将有一个任何Firestore文档都未引用的上传文件。如果我选择先发布文档然后上传文件,则会出现相同的问题。

我正在尝试做一些愚蠢的事情?我想念什么吗?我该怎么办?

firebase google-cloud-firestore firebase-storage
1个回答
1
投票

您可以使用Cloud Functions使Firestore和存储保持同步。例如:

  1. 首先将文档写入Firestore,但不存储文件的路径。记住该文档的唯一ID。
  2. 然后,客户端可以使用文件路径中的该ID直接将其上传到存储中>
  3. [存储库上载完成后,Cloud Functions触发器将触发,从文件中解析文档的ID,然后在存储库中更新匹配的文档(如果尚不存在,则创建它)。
  4. 您还可以编写触发器以通过删除另一个来保持文档/文件对同步。

这里的关键是每个上载的文件都需要知道如何找到配对的文件,并且文件也必须能够找到配对的文件。唯一的ID对此有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.