我想创建一个任何人都可以创建集线器的应用。创建集线器的人现在是集线器的管理员。他可以搜索YouTube视频并将其添加到播放列表中。其他用户可以搜索不同的集线器并连接到它,他们将看到由管理员创建的相同播放列表,并且在连接到同一集线器的所有设备上播放相同的视频。事情是有一个投票系统,用户可以投票给特定的播放列表中的视频,下次播放投票率最高的视频
谢谢,我想使用firebase来实现这一点。任何人都可以指导我如何实现这个?我知道播放列表必须发送到数据库,其他用户也可以看到它。我只需要了解如何实施它的步骤或想法,任何链接或建议或其他替代方案都受到高度赞赏?
答案 0 :(得分:1)
当管理员创建HUB时,您需要创建:
1. AdminHubDB :
-$hubId1 :
- adminId : $userid1
-$hubId2 :
- adminId : $userid2
2. MemberHubDB :
-$hubId1 :
- $userid1 : true
-$hubId2 :
- $userid1 : true
- $userid2 : true
3. HubJoinedDB :
-$userId1 :
- $hubId1 : true
- $hubId2 : true
-$userId2 :
- $hubid2 : true
4. PlayListDB :
-$hubId1 :
- $videoId1 :
- videoUrl : https://www.youtube.com/watch?v=[SOMEID]
- voteCount : 2
- $videoId2 :
- videoUrl : https://www.youtube.com/watch?v=[SOMEID]
- voteCount : 1
-$hubId2 :
- $videoId3 :
- videoUrl : https://www.youtube.com/watch?v=[SOMEID]
- voteCount : 5
- $videoId4 :
- videoUrl : https://www.youtube.com/watch?v=[SOMEID]
- voteCount : 10
出于安全考虑,您需要指定一些规则:
以下是规则:
{
"rules": {
"PlayListDB": {
".read": "auth !== null",
"$hubId": {
".write": "root.child('AdminHubDB/'+$hubId+'/adminId'+'/'+auth.uid).exists()",
"$videoId" :{
"voteCount" :{
".write" : "root.child('MemberHubDB/'+$hubId+'/'+auth.uid).exists()"
}
}
}
}
}
}
如果父级规则等于true,则会忽略子规则,如果子规则为false则忽略该事件。
但如果父母的规则等于假,它将继续检查孩子的规则。
此外,当您更新voteCount时,请确保您使用Firebase交易方法进行有效计数