2017-12-16 3 views
-1

Ich habe eine Firebase-Datenbank wie diese. Ich benutze angularfire2 5.0, um die Datenbank abzufragen.AngularFire2 5.0 Wie verschachtelte Daten gelesen werden

groups{ 
    -L01ocnd1jxL8wOkLqRK{ 
     groupCode: "2eotrg" 
     groupDescription: "Test" 
     groupName: "Test" 
     members{ 
      YuKVbvuGTNgw6OmVr4N89XZG88H3{ 
      mail: "[email protected]" 
      name: "Victor" 
      subscription{ 
       -L01ocnkVVLXPNqCyfLi{ 
        rolegroup: 3  
        state: true; 
       } 
      } 
      } 
     } 
     rules{ 
     firsRule: 0 
     secondRule: 0 
     } 
    } 
} 

Ich versuche, die Regeln und die Mitglieder dieser Gruppe zu machen, aber ich kann es nicht tun.

las ich die Gruppe als eine Liste

this.items = this.afDB.list('/groups/'+groupKey).snapshotChanges().map(changes => { 
    return changes.map(c => ({ key: c.payload.key, ...c.payload.val() })); 
}); 

Und meiner Meinung nach bin ich versucht, die Mitglieder und die Regeln zur Liste, aber ich kann es nicht tun.

 <ion-item *ngFor="let item of items | async"> 
       {{item | json}} 
     </ion-item> 

Ihre Hilfe erklären Sie mir bitte, wie es geht.

In früheren Version für angularfirebase verwende ich so etwas.

<ion-list inset> 
     <ion-item *ngFor="let item of items | async"> 
      <div *ngFor="let member of item.mebers"> 
       {{member | json}} 
      </div> 
     </ion-item> 
     </ion-list> 

Danke für Ihre Hilfe.

Antwort

-1

Lösung.

Die snapshotChanges geben ein Array von SnapshotAction zurück.

interface SnapshotAction { 
    type: string; 
    payload: DatabaseSnapshot; 
    key: string; 
    prevKey: string | undefined; 
} 

Die Lösung ist die SnapshotAction.payload zu lesen, die eine standartisierte DabaseSnapshot zurückzukehren, und dann die Funktion verwenden, die für diese Schnittstellen Feuerbasis bereitzustellen. (https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot)

Hier ist der Code ...

this.groupRef.snapshotChanges().subscribe(snapshot => { 
    snapshot.forEach(snap => { 
    console.log(snap.key); 

    if(snap.key == 'groupCode'){ 
     var datasnapshot = snap.payload; 
     datasnapshot.val(); 
     console.log(datasnapshot.val()); 

    } 
    if(snap.key == 'members'){ 
     var datasnapshot = snap.payload; 
     console.log("Snapchot"+JSON.stringify(datasnapshot)); 
     datasnapshot.forEach(function(childSnapshot) { 
     var key = childSnapshot.key; 
     var childData = childSnapshot.val(); 
     console.log(key); 
     console.log(childData.mail); 
     console.log(childData.subscription); 

     var subscriptionsnap = childSnapshot.child("subscription"); 
     console.log(subscriptionsnap); 
     subscriptionsnap.forEach(function(subsc){ 
      console.log(subsc.key); 
      var subsdata = subsc.val(); 
      console.log(subsdata.rolegroup); 
     }); 

    }); 

    }   

    } 
); 

}); 
Verwandte Themen