Предположим следующее.Firebase: как читать каждый дочерний узел в родительском объекте, за исключением детей с конкретными данными
posts : {
"$postid":{
"meta":{
"state":true,
"text" :"I should be read",
},
"likes":{
"uid1":true,
"uid2":true,
},
},
"$postid":{
"meta":{
"state":false,
"text" :"I should be read",
},
"likes":{
"uid1":true,
"uid2":true,
"uid3":true,
},
}
}
Я хочу запросить родительский узел ('posts') следующим образом.
- Оставьте из сообщения с состоянием = False
- Приоритетность сообщения с большинством любит
Правила безопасности
- Запретить сообщения с состоянием == ложным для чтения.
Вот версия Javascript Как я запрашиваю данные. ////$.fdr === firebase.database.ref();
$.fdr("posts").orderByChild("time").limitToLast(20).once('value',function(r) {
var r = r.val();
if(r !== null){
///use r;
}
},function(e){
console.log(e);
});
Почему это: я хочу, чтобы пользователь удалял сообщение и удалял его позже. Чтобы удалить, меняем значение «post.meta.state» на «false». Пока значение "post.meta.state" неверно, правила безопасности не должны позволять читать эту запись.
Проблема: Если я установить правила в почтовом узле, а не родительский узел («сообщения»),
"postid": {
".read":"data.child('state').val() == true"
}
, то я могу ограничить «.read», но только если я буду запрашивать сообщения следующим образом:
firebase.database.ref("posts/postid");
в противном случае при попытке запроса от родительского узла, как:
firebase.database.ref("posts/"),
, чтобы я мог отфильтровать сообщения, которые я не хочу возвращать, тогда мне придется поднять правила с «сообщений» детей до «posts» (parent), что приведет к игнорированию правил в дочерних элементах, и там я не могу найти способ отказать в возвращении сообщений с «state» == false;
Вышеуказанное основано на моем понимании до сих пор, пожалуйста, исправьте, где я потерялся.
Вы undoubtably уже пытались что-то. Поделитесь тем, что вы пробовали, и минимальным кодом, который показывает, где вы застряли. По крайней мере, это скажет нам, на какой платформе вы нацеливаетесь. Но, скорее всего, это также даст нам гораздо лучшее представление о том, как вам помочь. –
@FrankvanPuffelen см. Новое редактирование. – Relm