一个应用程序中有多个Firebase项目

Dan*_*rwe 4 firebase firebase-realtime-database

我正在构建一个上面带有任意数量的“微型社区”的应用程序。当前,用户只能属于一个用户,因此当他们最初注册时,他们输入一个密码,该密码将其与相关社区相关联。

将这些“微型社区”(由未来的客户在应用程序中争夺空间的所有者所拥有)分隔为单独的Firebase项目或将所有数据保持在一起是否明智?

Fra*_*cia 5

我建议您将所有社区保持在一起。首先,因为我不太确定您是否可以在同一应用程序中使用多个Firebase项目。

我建议您将该“社区”及其所有当前信息存储为数据库中的项目。例如:

{
    "Communities":{
            "CommunityKey1":{
                "communityName":
                "createdDate":
                ....
            }
            "CommunityKey2":{
                "communityName":
                "createdDate":
                ....
            }
            "CommunityKey3":{
                "communityName":
                "createdDate":
                ....
            }
            ....
        }
}
Run Code Online (Sandbox Code Playgroud)

并且,当您将用户添加到数据库时,只需向他们添加一个关联字段“ currentCommunity”或类似的字段,即可在其中存储该用户的关联CommunityID。然后,当您想为一个社区筛选用户时,只需使用:

FirebaseDatabase.getInstance().getReference().child("users").child("currentCommunity");
Run Code Online (Sandbox Code Playgroud)

您可以.equalTo("CommunityID")在该查询的末尾使用来过滤其他内容。我不是Firebase方面的专家,但是我正在做一个具有类似用户过滤功能的应用程序(使用组代替社区,它们可以属于多个),而最好的方法是使用此模型。

希望对您有所帮助!祝好运!


Dav*_*uez 5

Firebase 现在支持在一个应用中访问多个项目。无需走微社区路线。这是有关如何执行此操作的教程:https : //firebase.google.com/docs/configure/

我目前在我的 Android 项目中使用它,所以如果您在设置它并在 Android 中实现它时遇到问题,请随时发表评论!

编辑

当您使用您的应用配置 Firebase 时,您默认使用一个数据库帐户。如果您想使用第二个(或更多),请继续阅读。

在您的活动或片段中,您必须使用您的所有帐户信息初始化 FirebaseOptions 实例,使用代表第二个帐户的标签名称初始化 FirebaseApp,然后获取 FirebaseApp 的实例,最后获取您的第二个帐户的 DatabaseReference 实例所以你可以随意使用它。这是我使用的代码块:(注意:您作为 FirebaseOptions 实例的参数输入的信息与您的第二个数据库帐户相关联):

private void initSecondFirebaseAcct()
{
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setApplicationId("<your application id>")
            .setApiKey("<your api key>")
            .setDatabaseUrl("<your DB url that ends in 'firebaseio.com/' ")
            .build();

    try
    {
        FirebaseApp.initializeApp(this, options, "<database tag>");
    }
    catch (Exception e)
    {
        Log.d("Firebase error", "App already exists");
    }

    mMySecondApp = FirebaseApp.getInstance("<database tag>");
    mSecondDBRef = FirebaseDatabase.getInstance(mMySecondApp).getReference();
}
Run Code Online (Sandbox Code Playgroud)

希望有帮助!