Я пытаюсь создать базу данных, в которой есть сообщения, опубликованные пользователем, и только лица, подписанные на этого человека, могут видеть это сообщение. проблема здесь в том, что я добавляю прослушиватель событий на родительский узел в надежде, что он возвращает дочерние узлы, которые применяются только к правилу чтения, написанному внутри дочерних узлов, я знаю о разделе «Правила не являются фильтрами» в документации по fire- и я не могу достичь хорошего дизайна с эффективным использованием времени и памяти, когда я получаю только те сообщения, которые соответствуют моим правилам. Это моя база данных
{
"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", но так как он этого не делает прочитал: true, поэтому ничего не возвращается.
единственное решение, о котором я мог подумать, - это создать другое дерево на том же уровне сообщений, которое будет содержать имена всех сообщений, а затем я начинаю делать прослушиватель одного события включенным. каждый почтовый узел (от дочернего (посты) до дочернего (посты + пост [i]))
Есть ли лучший вариант, потому что в случае 100 постов я сделаю 100 отдельных событий, о которых я думаю, что время , память и Inte rnet ненужное потребление