如何使用Firestore创建多环境DB

Dya*_*yan 14 firebase google-cloud-firestore

我一直在寻找如何在Firebase中创建多个Firestore实例,我需要不同的Db用于prod,staging和development.我阅读了文档,似乎我只需要修改应用程序中的"Google-services.json"文件.我没有得到的是我应该修改什么以及它在控制台中的外观.

  • 我是否会在同一个项目中看到不同的实例?

  • 我需要为每个环境创建不同的项目并修改文件中的这些值?

  • 如果我需要测试需要在所有环境中进行测试的东西,并且所有这些都要求Blaze运行该测试我是否必须支付Triple?

提前致谢

Dou*_*son 11

Firebase不支持在单个项目中使用多个Firestore实例.

Firebase团队强烈建议为每个环境创建不同的项目,以使它们分开.这可能意味着您必须构建不同的应用程序,每个应用程序指向不同的实例,或者您必须以某种方式在运行时配置您的应用程序以选择您要使用的项目.

只要您接受Spark计划的限制,就没有义务向任何您不想支付的项目添加计费.

  • 两个项目意味着两个google-services.json文件。我该如何处理? (3认同)

Que*_*n C 10

最安全的方法是创建一个新的谷歌云项目。如果需要,您可以将当前的 Firestore 数据库导出到新项目。

一步步:

  1. 通过将所有文档导出到存储桶来备份您当前的数据库:https : //firebase.google.com/docs/firestore/manage-data/export-import

    gcloud beta firestore export gs://[BUCKET_NAME]

  2. 创建一个新项目 -> https://cloud.google.com/resource-manager/docs/creating-managing-projects

  3. 在仪表板中,选择 Firestore 进入您的新项目并创建一个空数据库
  4. 在仪表板中,转到您的 BACKUP_BUCKET 并在权限选项卡中添加您的新项目服务帐户

  5. 将项目切换到您的新项目 gcloud config set project 'new-project'

  6. 然后导出您的数据 gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/EXPORT_PREFIX在你的水桶创建的文件夹作为名称。

我使用这种方法明确分离了“预生产”和“生产”环境(团队可以访问生产环境并与生产同步,而无需访问生产环境代码库和配置)。

  • 我想取决于你公司的规模。其实我不明白你的意思,为什么在分期中要禁用计费? (2认同)

zza*_*s11 5

是的,Firebase在单个项目中不支持多个实例。但是我的情况是,我在Firestore根目录中创建了3个不同的文档,并设置了每个环境以相应地引用这些文档。每个文档将具有相同的集合,子集合和文档。

例如,

dev -> users -> details
    -> others_collection -> details

stag -> users
     -> others_collection -> details

prod -> users
     -> others_collection -> details
Run Code Online (Sandbox Code Playgroud)

在客户端,每个环境都将像这样获取集合:

db.collection(`${env}/users`)
Run Code Online (Sandbox Code Playgroud)

我正在做一个小型项目,似乎对Firestore提供的功能非常满意。在单个项目中。我可以根据环境创建许多ios / android应用程序,每个环境在Firestore中都有其自己的文档和集合。

  • 从开发角度来看,这很方便,但是从安全角度来看,这似乎并不理想。现在,来自您任何环境的任何客户端都可以访问来自您其他任何环境的所有数据! (4认同)
  • 了解您的担忧。我认为这些规则有助于提高安全性,并防止用户访问其他环境。 (2认同)

Ale*_*amo 5

如今,Firebase 支持在单个项目中使用多个 Firestore 实例。以下是公告:

这是文档: