动态切换到不同的firebase项目数据库(Javascript)

时间:2018-04-30 09:55:52

标签: javascript firebase firebase-realtime-database

我需要开发一个聚合管理Web应用程序,需要连接到不同的firebase项目数据库(不同的谷歌帐户)。是否可以通过javascript动态切换到不同的firebase项目数据库?

2 个答案:

答案 0 :(得分:4)

要访问代码中动态确定的数据库,请设置托管数据库的项目的配置数据。

var config = {
    apiKey: "<API_KEY>",
    authDomain: "<PROJECT_ID>.firebaseapp.com",
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
    storageBucket: "<BUCKET>.appspot.com",
};

var database = firebase.database();

var secondaryAppConfig = {
    apiKey: "<ANOTHER_API_KEY>",
    authDomain: "<ANOTHER_PROJECT_ID>.firebaseapp.com",
    databaseURL: "https://<ANOTHER_DATABASE_NAME>.firebaseio.com",
    storageBucket: "<ANOTHER_BUCKET>.appspot.com",
};

// Initialize another app with a different config
var secondary = firebase.initializeApp(secondaryAppConfig, "secondary");

// Retrieve the database.
var secondaryDatabase = secondary.database();

现在根据您的应用特定的条件进行选择:

var db = my_condition ? database : secondaryDatabase;

请参阅sample in the Firebase documentation

答案 1 :(得分:1)

@Puf给出了最好的答案。我在这里补充一点。更多的安全措施,如果您将其加载到浏览器中,您的所有配置都可能会被曝光。

我假设您可以自由创建一个名为Router(或任何您想要的)的新firebase,并默认情况下让用户登录(auth)。然后根据条件,发送该特定用户所需环境的配置。

eg:
{
    "env":{
       "e1":{
          apiKey: "<API_KEY>",
          authDomain: "<PROJECT_ID>.firebaseapp.com",
          databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
          storageBucket: "<BUCKET>.appspot.com"
       },
       "e2":{
          apiKey: "<API_KEY2>",
          authDomain: "<PROJECT_ID2>.firebaseapp.com",
          databaseURL: "https://<DATABASE_NAME2>.firebaseio.com",
          storageBucket: "<BUCKET2>.appspot.com"
       }
     }
  }