2016-08-08 10 views
0

ich kann nicht herausfinden bekommen, wie flach Sammlung von Produkten zu bekommen, wo ich meine Daten in Form Prods/$ companyKeys/$ prodKeysWie flach beobachtbaren Liste von 2-Ebene nach unten Schlüsselliste in AngularFire2

{ 
    "ID1" : { 
    "prodID1" : { 
     "name" : "Car" 
    }, 
    "prodID2" : { 
     "name" : "Door" 
    }, 
    "prodID3" : { 
     "name" : "Sandwich" 
    } 
    }, 
    "ID2" : { 
    "ProdID4" : { 
     "name" : "Glass" 
    }, 
    "ProdID5" : { 
     "name" : "Pen" 
    } 
    } 
} 
haben es geschafft,

Gibt es einen einfachen Weg in Rxjs oder in AngularFire2 selbst direkt Sammlung von Produkten zu erhalten, Unternehmen Ids auslassen? Oder muss ich meine Daten neu anordnen?

// turn products into array 
var arr = []; 
for(var key in products) { 
    arr.push(products[key]); 
} 

Rx.Observable.from(arr) 
    .flatMap(x => { 
    // 'x' is like object ID1, create array of products 
    var arr = []; 
    for (var key in x) { 
     arr.push(x[key]); 
    } 
    return Rx.Observable.from(arr); 
    }) 
    .subscribe(x => document.write(JSON.stringify(x) + '</br>')); 

Ausgabe::

{"name":"Car"} 
{"name":"Door"} 
{"name":"Glass"} 
{"name":"Sandwich"} 
{"name":"Pen"} 

nicht sicher, wie Sie die Schlüssel zu handhaben wollen, aber Sie können verwenden

Dank

Antwort

1

Observable.flatMap ist für einen solchen Zweck (fiddle) gemacht Observable.pairs, um das Durchlaufen der Objekteigenschaften noch einfacher zu machen. Der sich ergebende Strom ist von Arrays mit dem ersten Element ist, um die Schlüssel und der zweite der Wert für den Objekteigenschaften ist durch:

Rx.Observable.pairs(products) 
    .flatMap(x => Rx.Observable.pairs(x[1])) 
    .subscribe(x => console.log(x[0], x[1])); 

Dies gibt Arrays wie folgt aus:

["prodID1", {name: "Car"}] 
["prodID2", {name: "Door"}] 
["prodID3", {name: "Glass"}] 
["prodID4", {name: "Sandwich"}] 
["prodID5", {name: "Pen"}] 
+0

Erstkopiegeschwindigkeit scheint eher, was ich brauchen. FirebaseListObservables (und ObjectObservable) haben einige zusätzliche Eigenschaften wie die Schlüsseleigenschaft, die ich in der erstellten beobachtbaren Liste beibehalten muss. Ich habe meine Datenstruktur geändert, aber Ihre Antwort hat mich in einem anderen Problem in die richtige Richtung gedrängt. Vielen Dank – Bogac

Verwandte Themen