如何使用Firestore创建多环境数据库

时间:2018-02-06 17:54:15

标签: firebase google-cloud-firestore

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

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

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

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

提前致谢

3 个答案:

答案 0 :(得分:7)

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

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

只要您接受Spark计划的限制,就没有义务为您不想支付的任何项目添加账单。

答案 1 :(得分:4)

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

例如,

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

stag -> users
     -> others_collection -> details

prod -> users
     -> others_collection -> details

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

db.collection(`${env}/users`)

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

答案 2 :(得分:1)

最安全的方法是创建一个新的Google Cloud项目。您可以根据需要将当前的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是在存储桶中创建的文件夹的名称。

我使用此方法将“ preprod”和“生产”环境明确分开(团队可以访问生产并与生产同步,而无需访问生产环境的代码库和配置)。