问题描述
我正在尝试使用 Firebase 构建一个 android 应用程序,该应用程序需要在一个应用程序中使用两个独立的数据库(教师和学生)。我在互联网上搜索了解决方案,但我得到的只是这个解决方案 - Multiple Firebase projects in one app,这似乎是一个很好的解决方案,但我不明白。
那么,如何在一个应用程序中合并两个 firebase 项目?
解决方法
您不再需要实施该链接中描述的社区解决方案。
根据this:
有时您需要使用相同的 API 访问不同的项目 - 例如,访问多个数据库实例。在大多数情况下,有一个中央 Firebase 应用程序对象来管理所有 Firebase API 的配置。该对象作为您正常设置的一部分进行初始化。但是,当您想从单个应用程序访问多个项目时,您需要一个不同的 Firebase 应用程序对象来单独引用每个项目。由您来初始化这些其他实例。
您需要首先创建一个 Firebase 选项对象来保存 Firebase 应用程序的配置数据,如下所示:
// Manually configure Firebase Options. The following fields are REQUIRED:
// - Project ID
// - App ID
// - API Key
FirebaseOptions options = new FirebaseOptions.Builder()
.setProjectId("my-firebase-project")
.setApplicationId("1:27992087142:android:ce3b6448250083d1")
.setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
// setDatabaseURL(...)
// setStorageBucket(...)
.build();
初始化此选项对象后,您可以使用它来配置额外的 Firebase 应用程序实例。
例如,如果您有另一个名为“otherApp”的应用实例,则可以执行以下操作:
// Initialize with secondary app
FirebaseApp.initializeApp(this /* Context */,options,"otherApp");
// Retrieve secondary FirebaseApp
FirebaseApp secondary = FirebaseApp.getInstance("otherApp");
通过这种方式,您可以连接到另一个实时数据库。
,是的,您可以遵循该指南 https://firebase.google.com/docs/projects/multiprojects#java。
基本上,您需要手动启动提供配置的 firebase 应用
// [START firebase_options]
// Manually configure Firebase Options. The following fields are REQUIRED:
// - Project ID
// - App ID
// - API Key
FirebaseOptions options1 = new FirebaseOptions.Builder()
.setProjectId("my-firebase-project")
.setApplicationId("1:27992087142:android:ce3b6448250083d1")
.setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
// setDatabaseURL(...)
// setStorageBucket(...)
.build();
FirebaseOptions options2 = new FirebaseOptions.Builder()
.setProjectId("my-firebase-project")
.setApplicationId("1:27992087142:android:ce3b6448250083d1")
.setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
// setDatabaseURL(...)
// setStorageBucket(...)
.build();
// [END firebase_options]
// [START firebase_secondary]
// Initialize with secondary app
FirebaseApp.initializeApp(this /* Context */,options1,"first");
FirebaseApp.initializeApp(this /* Context */,options2,"secondary");
FirebaseApp first = FirebaseApp.getInstance("first");
FirebaseApp secondary = FirebaseApp.getInstance("secondary");
您可以从 google-service.json
稍后您可以从该 FirebaseApp
中获取数据库,例如
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondary);
然后你就可以像以前一样处理这个项目了。
,您提到的示例可以按以下方式使用。 您可以在firebase db中创建两个主表,然后您可以通过
进行操作val reference = FirebaseDatabase.getInstance().getReference()
val teacher = reference.child("teacher")//refers to the teacher table
val student = reference.child("student")//refers to the student table