有没有一种有效的方法在Firebase中的节点列表上实现安全规则,以防止许多网络连接和查询?
我正在使用用户列表进行应用程序,并且每个用户都有他们想要与朋友列表中的人共享的帖子列表(基本上有点像社交网络) .
一种方法是具有“/ users”表,其中每个用户在其用户节点下具有朋友“/ users / xxx / friends”的列表,以及他们自己的帖子“/ users / xxx / posts”的列表 . 要查询所有朋友的近期帖子,需要许多Firebase查询,每个用户的朋友的“帖子”节点都有一个查询 .
{
"users" : {
"FKOZlhz05xrVvKGl2" : {
"name" : "John Smith",
"friends" : {
"Tz7Ztv546lOaowrq2" : true
}
"posts" : {
"-Kc-n235d5" : {
"text" : "This is a status update"
}
},
"Tz7Zt546jlOaowrq2" : {
"name" : "Helen test",
"friends" : {
"FKOZlhz05xrVvKGl2" : true
},
"posts" : {
"-Kc-neow05" : {
"text" : "Another status update"
},
"-Kc-ab3243" : {
"text" : "Feeling confused"
}
}
}
}
如果有人想要查询其朋友列表中的所有人的“帖子”,则需要多个同时查询,因为Firebase不允许某人查询整个“用户”表并过滤掉不在朋友列表中的任何内容 .
另一种选择是为所有用户提供单独的“/ posts”列表,可以在一个操作中查询 . 但是,在这种情况下,还无法实施安全规则来过滤掉您朋友的帖子,因为Firebase不允许根据安全规则过滤“帖子”列表 .
我可以看到只查找朋友列表中的人的“帖子”列表的唯一方法是为每个朋友启动多个同时查询 .