如何在Firebase存储中启用和使用文件版本控制?

时间:2016-06-06 18:54:31

标签: javascript firebase firebase-storage

Firebase存储基于Google Cloud Platform,允许versioning of files

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

我们预计大多数开发人员都会启用此功能,以防止删除永久删除(实际上,我们提到在delete docs中执行此操作),因此将使用gsutil之类的工具或者他们自己的自定义后端来检索和恢复相应的文件。

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

答案 1 :(得分:0)

在对对象进行版本控制enabled之后,可能会listing noncurrent object versions

获取先前的对象版本:

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