我正在构建一个拥有任意数量的微型社区的应用程序'在上面。目前,用户只能属于一个用户,因此当他们最初注册时,他们会输入一个密码,将其与相关社区相关联。
将这些微观社区分开是否明智?' (由未来的客户在应用程序中占用空间所拥有)进入单独的Firebase项目或将所有数据保存在一起?
答案 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();
}
希望有所帮助!