Мне нужно разработать совокупное веб-приложение для администрирования, которое должно подключаться к различным базам данных проекта firebase (из разных учетных записей google). Можно ли динамически переключаться на разные базы данных проекта firebase через javascript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы получить доступ к динамически определяемой базе данных в вашем коде, установите данные конфигурации для проекта, в котором размещена база данных.
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;
@Puf дал лучший ответ. Я просто добавлю здесь один момент. Дополнительная мера безопасности, если вы загружаете его в браузере, есть вероятность, что все ваши конфигурации могут быть открыты.
Я предполагаю, что у вас есть свобода создать новую базу firebase под названием Router (или как вам угодно) и сделать так, чтобы пользователь входил (авторизация) в нее первым по умолчанию. Затем, в зависимости от условия, отправьте конфигурацию для среды, необходимой для этого конкретного пользователя.
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"
}
}
}
Конечно вы можете. Что касается вашего кода, все запросы к firebase - это методы REST (для вашего удобства, возможно, завернутые в библиотеку). Обновите свой вопрос, чтобы указать, откуда эти запросы выполняются (браузер? Сервер?) И какую библиотеку вы используете (если есть). Пожалуйста, попробуйте добавить код, указывающий на то, что вы уже пробовали.