2016-05-03 4 views
0

Я хочу отображать контент с использованием плоской реляционной структуры данных (аналогично структуре Firefeed). Все работает так, как должно, но я не могу понять, как отображать фактический контент. Я боюсь какое-то время, и я думаю, что я почти на самом деле, но что-то все еще отсутствует.Отображать реляционные данные в Firebase с помощью AngularJS

У меня есть две ссылки:

var userFeedRef = new Firebase(FIREBASE_URL).child("users").child($rootScope.currentUser.$id).child("feed"); 
var uploadsRef = new Firebase(FIREBASE_URL).child("uploads"); 

JSON выглядит следующим образом:

{ 
    "uploads" : { 
    "-KGkxzQj0FM2CMAXo5Em" : { 
     "author" : "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d", 
     "date" : 1462184179564, 
     "name" : "Zizazorro", 
     "reasonUpload" : "Test", 
     "startSec" : 80, 
     "uploadTitle" : "Kid Ink - Promise (Audio) ft. Fetty Wap" 
    }, 
    "-KGlCoD7kEa1k3DaAtlG" : { 
     "author" : "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d", 
     "date" : 1462188328130, 
     "name" : "Zizazorro", 
     "reasonUpload" : "Test2", 
     "startSec" : 80, 
     "uploadTitle" : "Kid Ink - Show Me ft. Chris Brown" 
    } 
    }, 
    "users" : { 
    "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : { 
     "date" : 1459369248532, 
     "feed" : { 
     "-KGkxzQj0FM2CMAXo5Em" : true, 
     "-KGlCoD7kEa1k3DaAtlG" : true 
     }, 
     "firstname" : "Bob", 
     "followers" : { 
     "e3de536b-03a1-4fb4-b637-ebcebaae55c6" : true 
     }, 
     "following" : { 
     "e3de536b-03a1-4fb4-b637-ebcebaae55c6" : true 
     }, 
     "regUser" : "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d", 
     "uploads" : { 
     "-KGkxzQj0FM2CMAXo5Em" : true, 
     "-KGlCoD7kEa1k3DaAtlG" : true 
     }, 
     "username" : "Zizazorro" 
    }, 
    "e3de536b-03a1-4fb4-b637-ebcebaae55c6" : { 
     "date" : 1459369285026, 
     "feed" : { 
     "-KGkxzQj0FM2CMAXo5Em" : true, 
     "-KGlCoD7kEa1k3DaAtlG" : true 
     }, 
     "firstname" : "Anna", 
     "followers" : { 
     "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : true 
     }, 
     "following" : { 
     "87a8b6c8-7f72-45c2-a8c5-bb93fe9d320d" : true 
     }, 
     "regUser" : "e3de536b-03a1-4fb4-b637-ebcebaae55c6", 
     "username" : "Sven8k" 
    } 
    } 
} 

Проблема: Как я могу отобразить текущее содержимое загрузки, когда есть только идентификатор Справка? Мне нужна ссылка на идентификаторы для пользователя (userFeedRef) и ссылка на фактический контент этих конкретных идентификаторов, а не на все закачки (uploadsRef).

Как я могу показать этого пользователя ng-repeat в моем html? Так, например: нг-повтор {{}} feed.reasonUpload для user1 должен показать: Тест Test2

EDIT Я смотрел на этот пример, но я не могу понять, как оказать содержание по фактической подаче HTML в моем случае

var commentsRef = 
    new Firebase("https://awesome.firebaseio-demo.com/comments"); 
var linkRef = 
    new Firebase("https://awesome.firebaseio-demo.com/links"); 
var linkCommentsRef = linkRef.child(LINK_ID).child("comments"); 
linkCommentsRef.on("child_added", function(snap) { 
    commentsRef.child(snap.key()).once("value", function() { 
    // Render the comment on the link page. 
)); 
}); 
+0

См. Http://stackoverflow.com/questions/30299972/joining-data-between-paths-based-on-id-using-angularfire –

+0

@FrankvanPuffelen Я видел это сообщение раньше, и я пробовал все это снова, но вы рекомендуете NormalizedCollection? Я видел, что он все еще в бета-версии и не должен использоваться для реальных приложений atm. Я думаю, что это должно быть проще, чем фабрика. Он работал, когда вместо того, чтобы сделать его плоским, я отправил всю загрузку всем последователям, но я не думаю, что это хорошее решение для дублирования данных. Такая боль в заднице haha ​​ – Zizazorro

+0

Этот ответ имеет два подхода, один из которых расширяет AngleFire '$ firebaseArray()'. Это ближе всего к тому, что вы пытаетесь. –

ответ

0

Вы можете сделать что-то вроде этого:

$scope.finalData = (Object).values($scope.firebaseData.uploads); 
//$scope.firebaseData is data what you retrieving from firebase. 

Надеется, что это plunker поможет.

Смежные вопросы