是否有一种有效的方法在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不允许过滤"帖子"列表基于安全规则。
我能看到查找"帖子的唯一方法"仅列在朋友列表中的人员列表,即为每个朋友发起多个同时查询。