Database 如何创建多环境数据库&x27;消防商店

Database 如何创建多环境数据库&x27;消防商店,database,firebase,google-cloud-platform,google-cloud-firestore,environment,Database,Firebase,Google Cloud Platform,Google Cloud Firestore,Environment,我一直在研究如何在Firebase中创建多个Firestore实例,我需要不同的Db用于产品、阶段和开发。我阅读了文档,似乎只需要修改应用程序中的“googleservices.json”文件。我没有得到的是我应该修改什么,以及在控制台中该如何修改 我会在同一个项目中看到不同的实例吗 我需要为每个环境创建不同的项目,并在文件中修改这些值 如果我需要测试一些需要在所有环境中进行测试的东西,并且所有这些环境都需要Blaze来运行该测试,那么我有什么办法 付三倍 提前感谢Firebase不支

我一直在研究如何在Firebase中创建多个Firestore实例,我需要不同的Db用于产品、阶段和开发。我阅读了文档,似乎只需要修改应用程序中的“googleservices.json”文件。我没有得到的是我应该修改什么,以及在控制台中该如何修改

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

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

  • 如果我需要测试一些需要在所有环境中进行测试的东西,并且所有这些环境都需要Blaze来运行该测试,那么我有什么办法 付三倍


提前感谢

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

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


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

是的,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中都有自己的文档和集合。

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

逐步:

  • 通过将所有文档导出到数据库中备份当前数据库 桶:

    gcloud beta firestore导出gs://[BUCKET\u NAME]

  • 创建新项目->

  • 在仪表板中,选择Firestore进入新项目并创建一个空数据库
  • 在仪表板中,转到备份存储桶,并在“权限”选项卡中添加新的项目服务帐户

  • 将项目切换到新项目
    gcloud配置集项目“新建项目”

  • 然后导出数据
    gcloud beta firestore导入gs://[BUCKET\u NAME]/[EXPORT\u PREFIX]/
    导出前缀是在BUCKET中创建的文件夹的名称


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

    谢谢@DougStevenson!我正在对我的Firestore项目进行相应的重构,以便为生产做准备。路线图中是否有任何计划将多个Firestore数据库放在一个类似Firebase的项目中?@AdamHurwitz Realtime Database允许您添加多个数据库,因为它的可扩展性受到限制,当达到这些限制时,您需要跨多个数据库共享数据。Firestore没有这些限制,因此不需要多个DBs。如果你真的需要的话,你必须为每个实例创建不同的项目。谢谢道格。在一个应用程序中使用两个Cloud Firestore项目合法吗?两个项目意味着两个google-services.json文件。我该如何处理呢?@Ruben如果你对Firebase产品为什么会出现这种情况有疑问,你应该发到Firebase讨论组。从开发的角度来看,这很方便,但从安全的角度来看,这似乎不太理想。您任何环境中的任何客户端现在都可以访问您任何其他环境中的所有数据!我理解你的担心。我认为这些规则有助于提高安全性并防止用户访问其他环境。与此方法相关的任何其他缺点?我在哪里存储
    env
    变量?Firebase是否会自动检测到这种情况?如何防止自己将数据写入错误的环境?我可以想象,当您忘记并通过意外写入db时,导出/导入需要启用计费。我想这对搭建环境来说是没有意义的,这取决于你们公司的规模。事实上,我不明白你的意思,为什么要在分期付款时禁用计费?