一个应用中的多个Firebase项目

时间:2016-09-22 06:56:44

标签: firebase firebase-realtime-database

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

将这些微观社区分开是否明智?' (由未来的客户在应用程序中占用空间所拥有)进入单独的Firebase项目或将所有数据保存在一起?

3 个答案:

答案 0 :(得分:4)

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

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

{
    "Communities":{
            "CommunityKey1":{
                "communityName":
                "createdDate":
                ....
            }
            "CommunityKey2":{
                "communityName":
                "createdDate":
                ....
            }
            "CommunityKey3":{
                "communityName":
                "createdDate":
                ....
            }
            ....
        }
}

当您将用户添加到数据库时,只需添加一个关联字段“currentCommunity”或类似的地方,您可以为该用户存储关联的communityID。然后,当您想要过滤一个社区的用户时,只需使用:

FirebaseDatabase.getInstance().getReference().child("users").child("currentCommunity");

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

希望它会对你有所帮助!祝你好运!

答案 1 :(得分:2)

我一直在考虑和尝试解决同样的问题。到目前为止,我发现构建像您的微社区这样可能的“付费”方面的最佳方法是在一个项目中拥有登录/用户配置文件/成员关系。然后,其成员资格部分包含其他firebase项目的连接信息。然后每个社区都是一个单独的项目,都有自己的使用分析,空间,带宽使用等...是的,可以在您的应用程序中访问多个firebase项目。 https://firebase.google.com/docs/configure/

接下来的问题是,当有人创建一个新的“社区”时,我是否可以动态/ cli克隆一个firebase项目并对其数据进行种子初始化。 https://firebase.google.com/docs/cli/

祝你好运:)

答案 2 :(得分:1)

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

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

修改

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

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

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();
}

希望有所帮助!