Android 子级中包含读取规则的父级上的事件值侦听器
我正在尝试建立一个数据库,其中包含用户发布的帖子,只有订阅该帖子的人才能看到该帖子。 这里的问题是,我在父节点上添加了一个事件侦听器,希望它返回只应用于在子节点中编写的读取规则的子节点,我知道“规则不是过滤器”在fire base的文档中,我无法找到一个时间/内存效率高的设计,我只能检索适用于我的规则的帖子。 那是我的数据库Android 子级中包含读取规则的父级上的事件值侦听器,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试建立一个数据库,其中包含用户发布的帖子,只有订阅该帖子的人才能看到该帖子。 这里的问题是,我在父节点上添加了一个事件侦听器,希望它返回只应用于在子节点中编写的读取规则的子节点,我知道“规则不是过滤器”在fire base的文档中,我无法找到一个时间/内存效率高的设计,我只能检索适用于我的规则的帖子。 那是我的数据库 { "Users" : { // ids of users using the app "6Ya6nxqRy1fKt4BUOOh1brCJzvi2" : tru
{
"Users" : { // ids of users using the app
"6Ya6nxqRy1fKt4BUOOh1brCJzvi2" : true,
"Nxmo8Wlhlcg4GDvh7ZIAnmBbpS82" : true,
},
"followers" : {
"6Ya6nxqRy1fKt4BUOOh1brCJzvi2" : { //followers to the user with this id
"Nxmo8Wlhlcg4GDvh7ZIAnmBbpS82" : false,
"n9jTaFVPDNh6bJSSZZCT20UFA972" : true
},
"Nxmo8Wlhlcg4GDvh7ZIAnmBbpS82" : {
"6Ya6nxqRy1fKt4BUOOh1brCJzvi2" : true,
"n9jTaFVPDNh6bJSSZZCT20UFA972" : true
}
},
"posts" : {
"-M3YxODIv6frqFyGM4Nm" : { //post with a random generated Id
"img" : "cd4aaff5-cab9-44d6-b7d9-7587ed2f19fc",
"post" : "See this cool character !!",
"user" : "Nxmo8Wlhlcg4GDvh7ZIAnmBbpS82"
}
}
}
}
这就是我想申请的
{
"rules": {
".write": true ,
"posts":{
"$pid":{
".read": "data.child('user').val()===auth.uid ||root.child('followers').child(auth.uid).child(data.child('user').val()).val()=== true "
}
},
"followers":{
".read": true
},
"Users":{
".read": true,
}
}
}
当我想在“posts”节点上添加事件监听器,但由于它没有read:true,所以它不返回任何内容时,就会出现问题
我能想到的唯一解决方案是在相同级别的帖子上创建另一棵树,该树将包含所有帖子名称,然后我开始在每个帖子节点上创建单个事件侦听器(将子帖子替换为子帖子(posts+post[I]))
有没有更好的选择,因为在100篇文章的情况下,我会做100个单事件任务,我认为这是不必要的时间、内存和互联网消耗为每篇文章单独发出一个请求几乎没有你想象的那么慢,因为Firebase可以通过现有连接来处理这些请求。请看是否保证按我要求的顺序退货?是否有可能要求5在要求1之前退货(是的。由于所有请求都经过一个连接,所以数据库保证按顺序处理,结果也保证按顺序返回。为每个帖子单独发出一个请求并不像你想象的那么慢,因为Firebase可以通过现有连接将这些请求管道化。看到了吗?它保证返回iTEM与我请求的顺序相同吗?请求5是否有可能在请求1之前返回?:(是的。由于所有请求都通过单个连接,数据库保证它们按顺序处理,结果也保证按顺序返回。