在单个 Activity 中使用 2 个或更多 Firebase Realtime DB

Posted

技术标签:

【中文标题】在单个 Activity 中使用 2 个或更多 Firebase Realtime DB【英文标题】:Using 2 or more Firebase Realtime DB inside a single Activity 【发布时间】:2018-10-14 02:12:52 【问题描述】:

作为 Blaze 计划用户,我可以创建多个数据库实例,这样默认数据库就不会卡在 10 万个同时连接上。问题是,我正在尝试从两个数据库中调用数据,因为有些数据在数据库 1 中,而另一些在数据库 2 中。因此,在 Kotlin 中,我已将我的 Firebase 实例声明如下;

val db: DatabaseReference = FirebaseDatabase.getInstance().reference

上面的行适用于默认数据库(Databse 1)。 通常,如果我想从数据库 2 中调用另一个 Activity 的数据(现在不是这个),我需要在 getInstance() 方法中包含作为 HTTPS 链接的实例名称,如下所示;

val dataBase: DatabaseReference = FirebaseDatabase.getInstance("https://projectName.firebasio.com").reference

在这种情况下,我尝试使用这个 2 声明,它似乎给了我错误。

附上图片:

Logcat 只声明它是 E/androidRuntime: FATAL EXCEPTION: main 并且发生在第二个实例 decalration 是

 val dataBase: DatabaseReference = FirebaseDatabase.getInstance("https://projectName.firebasio.com").reference

Logcat:

原因:com.google.firebase.database.DatabaseException:无效 Firebase 数据库路径:https//projectName.firebaseio.com。火力基地 数据库路径不得包含“.”、“#”、“$”、“[”或“]” 在 com.google.android.gms.internal.zzepf.zzqn(未知来源:52) 在 com.google.android.gms.internal.zzepf.zzqo(未知来源:13) 在 com.google.android.gms.internal.zzepd.zzqj(未知来源:131) 在 com.google.firebase.database.FirebaseDatabase.getInstance(未知 资料来源:45) 在 com.google.firebase.database.FirebaseDatabase.getInstance(未知 来源:14) 在 paackageName.CountryList.(CountryList.kt:22) 在 java.lang.Class.newInstance(本机方法) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1173) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

【问题讨论】:

您能否编辑您的问题以具体说明错误? @DougStevenson 已编辑。 【参考方案1】:

您对 getInstance() 的第二次调用中的 URL 无效。 “https”后面少了一个冒号。

【讨论】:

我的天哪,我居然错过了一个冒号????顺便说一句,它还解决了将同一个项目的 2 个 DB 用于同一个 Activity/Fragment 的问题。 如果它有助于解决您的问题,请接受此答案正确。 完成。在我自己尝试之前,我认为 Firebase 还没有这些功能......【参考方案2】:

可在此处找到相关文档:https://firebase.google.com/docs/configure/#support_multiple_environments_in_your_android_application

// Manually configure Firebase Options
FirebaseOptions options = new FirebaseOptions.Builder()
        .setApplicationId("1:27992087142:android:ce3b6448250083d1") // Required for Analytics.
        .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw") // Required for Auth.
        .setDatabaseUrl("https://myproject.firebaseio.com") // Required for RTDB.
        .build();

【讨论】:

OP 询问的是单个项目中的多个数据库分片,而不是在不同项目之间拆分的多个数据库。

以上是关于在单个 Activity 中使用 2 个或更多 Firebase Realtime DB的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将 2 个或更多 png 图像合并到基本图像上

正则表达式:匹配模式后跟一个空格但不匹配2个或更多空格或EOF

如何测试多个(2个或更多)布尔值是不是为真

如何使用颤动在按钮网格中滑动/拖动 2 个或更多按钮

如何在 vuejs 中使用循环包装 2 个或更多 html 元素

您可以在 if 语句中使用 2 个或更多 OR 条件吗? [复制]