在单个 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