2016-05-03 20 views
0

Ich möchte Inhalte mit einer flachen relationalen Datenstruktur anzeigen (ähnlich wie bei Firefeed). Alles funktioniert so, wie es sollte, außer dass ich nicht herausfinden kann, wie ich den eigentlichen Inhalt anzeigen soll. Ich kämpfe seit einer Weile und ich denke, ich bin fast da, aber etwas fehlt noch.Anzeige relationaler Daten in Firebase mit AngularJS

Ich habe zwei Referenzen:

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

Die JSON wie folgt aussieht:

{ 
    "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" 
    } 
    } 
} 

Das Problem ist: Wie kann ich den eigentlichen Inhalt des Upload angezeigt werden, wenn es nur eine ID ist Referenz? Ich brauche einen Verweis auf die IDs für einen Benutzer (userFeedRef) und einen Verweis auf den tatsächlichen Inhalt dieser spezifischen IDs, nicht alle Uploads (uploadsRef).

Wie kann ich diesen Benutzer ng-repeat in meinem HTML anzeigen? So zum Beispiel: ng-repeat {{feed.reasonUpload}} für user1 zeigen hat: -Test Test2

EDIT Ich habe bei diesem Beispiel sieht, aber ich kann nicht herausfinden, wie das zu machen Inhalt auf dem tatsächlichen hTML-Feed in meinem Fall

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

Siehe http://stackoverflow.com/questions/30299972/joining-data-between-paths-based-on-id-using-angularfire –

+0

@FrankvanPuffelen Ich habe diesen Beitrag vor gesehen und ich habe es alles versucht jetzt wieder, aber empfehlen Sie NormalizedCollection? Ich sah, dass es noch in der Betaversion ist und nicht für echte Apps verwendet werden sollte. Ich denke, es sollte einfacher sein als die Fabrik. Es funktionierte, wenn ich es, anstatt es flach zu machen, den gesamten Upload an alle Follower gesendet habe, aber ich denke nicht, dass das eine gute Lösung in Bezug auf doppelte Daten ist. So ein Schmerz in den Arsch haha ​​ – Zizazorro

+0

Diese Antwort hat zwei Ansätze, einer von ihnen erweitert die AngularFire '$ firebaseArray()'. Das kommt dem am nächsten, was du versuchst. –

Antwort

0

Sie können etwas tun:

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

Hope this plunker werden Ihnen helfen.