【发布时间】:2016-09-22 06:56:43
【问题描述】:
我正在构建一个应用程序,其中包含任意数量的“微型社区”。目前一个用户只能属于一个,所以当他们最初注册时,他们输入一个密码,将他们与相关社区相关联。
将这些“微型社区”(由未来的客户拥有,在应用程序上使用空间)分离到单独的 Firebase 项目或将所有数据放在一起是否明智?
【问题讨论】:
标签: firebase firebase-realtime-database
我正在构建一个应用程序,其中包含任意数量的“微型社区”。目前一个用户只能属于一个,所以当他们最初注册时,他们输入一个密码,将他们与相关社区相关联。
将这些“微型社区”(由未来的客户拥有,在应用程序上使用空间)分离到单独的 Firebase 项目或将所有数据放在一起是否明智?
【问题讨论】:
标签: firebase firebase-realtime-database
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();
}
希望有帮助!
【讨论】:
我建议您将所有社区保持在一起。首先,因为我不确定您是否可以在同一个应用中使用多个 Firebase 项目。
我建议您将此“社区”作为项目及其所有当前信息存储在您的数据库中。例如:
{
"Communities":{
"CommunityKey1":{
"communityName":
"createdDate":
....
}
"CommunityKey2":{
"communityName":
"createdDate":
....
}
"CommunityKey3":{
"communityName":
"createdDate":
....
}
....
}
}
当您将用户添加到您的数据库时,只需为他们添加一个关联字段“currentCommunity”或类似的内容,您可以在其中存储该用户的关联社区 ID。然后,当您想过滤一个社区的用户时,只需使用:
FirebaseDatabase.getInstance().getReference().child("users").child("currentCommunity");
您可以在查询结束时使用.equalTo("CommunityID") 进行更多过滤。我不是 Firebase 的专家,但我正在做一个具有类似用户过滤的应用程序(使用组而不是社区,它们可以属于多个),最好的方法是使用这个模型.
【讨论】:
我一直在考虑并尝试解决同样的问题。到目前为止,我发现构建具有可能“付费”方面的微社区之类的最佳方式是在一个项目中拥有登录/用户配置文件/会员资格关联。然后其成员部分包含其他 Firebase 项目的连接信息。然后每个社区都是一个单独的项目,都有自己的使用分析、空间、带宽使用等……是的,可以在您的应用程序中访问多个 firebase 项目。 https://firebase.google.com/docs/configure/
所以下一个问题是,当有人创建新的“社区”时,我可以动态/cli 克隆一个 firebase 项目并为其数据播种初始数据吗? https://firebase.google.com/docs/cli/
祝你好运:)
【讨论】: