【问题标题】:How to enable and use file versioning in Firebase Storage?如何在 Firebase 存储中启用和使用文件版本控制?
【发布时间】:2016-10-06 12:01:05
【问题描述】:

Firebase 存储基于谷歌云平台,允许versioning of files

在 Firebase 控制台中,没有关于 GCP 存储桶的选项,并且在访问 GCP 控制台时,似乎没有办法在与 Firebase 项目相关的存储桶中启用版本控制。

此外,即使启用了版本控制,Firebase SDK 也没有提及如何访问以前版本的文件。

是否可以使用 Firebase 存储进行版本控制?

【问题讨论】:

    标签: javascript firebase firebase-storage


    【解决方案1】:

    Firebase 存储基于 GCS 构建,因此 GCS 的许多功能都可以通过 Firebase 存储访问。 Firebase Storage 还共享一个名为 <project-id>.appspot.com(或类似名称)的 GCS 存储桶,可通过 Firebase 控制台和 Cloud 控制台访问。

    您可以使用gsutil 工具(可能是最简单的方法)在您的存储桶上启用对象版本控制,如下所示:

    gsutil versioning set on gs://<project-id>.appspot.com
    

    也就是说,除了最新版本之外,无法使用 Firebase 存储客户端检索任何内容。这是有意的,因为 Firebase 存储提供了一个更简单的、以移动为中心的 GCS API 子集,而且我们没有一个超级引人注目的用例来为移动设备提供直观的对象版本控制故事。每个用户的数据备份(由用户在没有开发人员干预的情况下启动)和文档差异是我能想到的两个,但如果你有另一个,我们很乐意听到它:)

    我们预计大多数开发人员会启用此功能以防止永久删除(事实上,我们在delete docs 中提到过这样做),因此将使用gsutil 之类的工具或他们自己的自定义后端来检索和恢复适当的文件。

    编辑 10/1:由于这些用例变得越来越普遍,我们更新了我们的文档,以在我们的 GCP Integration guide 中包含更多您可以使用 Google Cloud Platform 执行的操作。

    【讨论】:

    • 感谢迈克的精彩回答。我正在为 HTML 中的数字图书构建一个发布系统,能够直接从 Firebase 检索文件版本真是太棒了。
    • 所以我对此的想法是保存快照并使用版本控制来移动它们(如谷歌文档)。保存为 .json 并存档将降低数据库实例的复杂性并保存为“最新”,同时能够加载早期版本。相反,我们必须将整个快照保存在数据库中。
    【解决方案2】:

    在对象版本化enabled 之后,可以使用listing noncurrent object versions

    获取以前的对象版本:

    Long previousGeneration = ...;
    byte[] previousContent = bucket.getStorage().get(BlobId.of(bucket.getName(), objectName, previousGeneration)).getContent();
    

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 2014-06-15
      • 2021-03-16
      • 2019-12-03
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多