Как работать с (=true) ссылками в Firebase
Я создаю приложение AngularFire и борюсь со структурой своей базы данных. Приложение работает с пользователями, загрузками и комментариями, очень похоже на пример Firefeed, но отличается. Я пытаюсь сделать свою базу данных как можно более плоской, поэтому я хочу сохранить загрузки отдельно от пользователей (если комментарий к загрузке опубликован, он должен обновляться на временной шкале каждого пользователя).
На данный момент, если выгрузка опубликована, она переходит в ветку "загрузки", кроме "пользователей". Каждый пользователь получит идентификатор этой загрузки как: uploadUid=true в своем фиде, поэтому данные не дублируются.
Проблема в том, как я могу получить данные от загрузки для пользователей, которые нуждаются в этой загрузке в своем фиде, просто сославшись на true? Так, например, как я могу перебрать ленту пользователя 1, потому что у меня есть только "-KGkxzQj0FM2CMAXo5Em": true", где мне нужна информация из этой загрузки, которая находится в ветке" uploads ".
РЕДАКТИРОВАТЬ:
{
"uploads" : {
"-KGkxzQj0FM2CMAXo5Em" : {
"author" : "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d",
"date" : 1462184179564,
"name" : "Zorro",
"reasonUpload" : "Test",
"uploadTitle" : "Title 1",
}
},
"users" : {
"87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : {
"date" : 1459369248532,
"feed" : {
"-KGkxzQj0FM2CMAXo5Em" : true
},
"followers" : {
"e3de536b-03a1-4fb4-b637-ebcebaae55c6" : true
},
"following" : {
"e3de536b-03a1-4fb4-b637-ebcebaae55c6" : true
},
"regUser" : "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d",
"uploads" : {
"-KGkxzQj0FM2CMAXo5Em" : true
},
"name": "Zorro"
},
"e3de536b-03a1-4fb4-b637-ebcebaae55c6" : {
"date" : 1459369285026,
"feed" : {
"-KGkxzQj0FM2CMAXo5Em" : true
},
"followers" : {
"87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : true
},
"following" : {
"87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : true
},
"regUser" : "e3de536b-03a1-4fb4-b637-ebcebaae55c6"
}
}
}
И структура того, как получить пост для каждого фида фолловеров (это то, что использует Firefeed):
self._mainUser.child("followers").once("value", function(followerList) {
followerList.forEach(function(follower) {
if (!follower.val()) {
return;
}
var childRef = self._firebase.child("users").child(follower.name());
childRef.child("feed").child(uploadRefId).set(true);
});
});
РЕДАКТИРОВАТЬ 2
И это то, что я сейчас использую, чтобы получить конкретные загрузочные идентификаторы в ленте каждого подписчика (в моем контроллере):
firebaseAuth.$onAuth(function (authUser) {
if (authUser) {
var currentUser1 = new Firebase(FIREBASE_URL).child("users").child($rootScope.currentUser.$id);
var firebase = new Firebase(FIREBASE_URL);
currentUser1.child("feed").once("value", function(list) {
list.forEach(function(follower) {
var childRef = firebase.child("uploads").child(follower.key());
// childRef.child("feed").push(upload);
var childRefArray = $firebaseArray(childRef);
$rootScope.feedd = childRefArray;
});
});
} // if(authUser)
}); // auth.$onAuth
РЕДАКТИРОВАТЬ 3
И в моем HTML:
<div class="feed-total" ng-repeat="feed in feedd | orderBy: '-date'">
<div>
{{feed.reasonUpload}} // this should be "Test"
</div>