Wie der Titel, ich bin das Abrufen eines Mitglieds Profil von Firebase mit der database.object
Methode und Abonnieren, dass im Profile View-Controller einer Angular 4 App.Wie wird ein transformiertes Objekt von einer beobachtbaren Firebase zurückgegeben, wobei ein verschachtelter Wert von einer anderen beobachtbaren Firebase zurückgegeben werden muss?
Derzeit kann ich alle diese Profilinformationen gut erhalten, und die Daten sind in meinem Firebase-Controller mutiert.
Für einige Hintergrund:
- In meinem Profil Objekt, gibt es eine ID eines Admin-Benutzer, die für einige Updates für das Profil
- Mit Hilfe dieser ID verantwortlich war, muss ich von einem Benutzerobjekt packen Feuerbasis, die Dinge wie das Admin-Benutzernamen enthält, der die Änderung
Hier ist ein Beispiel für reduzierte gemacht, was ich tue:
firebase.controller.ts
public getMemberProfile(id: string): Observable <IProfile> {
return this.database.object(`${MEMBERS_PATH}/${id}`).map(member => this.transformMember(member))
}
public getAdminUser(id: string): Observable <IUser> {
return this.database.object(`${USERS_PATH}/${id}`).map(user => user)
}
private transformMember(member): IProfile {
return {
aboutUserObj: this.getAdminUser(member.adminUserId).subscribe((adminUser)=> {
return adminUser // Of course this does NOT work
}),
// Other stuff
}
}
profile.controller.ts
this.memberFirebase.getMemberProfile(this.id).subscribe((profile) => {
this.profile = profile
})
Wie Sie hoffentlich von dem reduzierten Fall sehen, es ist eine Voraussetzung dafür ist, dass ich das Element zu laden, dann verwenden Das Member-Objekt, um die ID zu erhalten, die ich brauche, um den Admin-Benutzer zu erhalten, den ich aufnehmen muss, um Updates für dieses Profil in der Ansicht aufzulisten.
Die Frage
Wie kann ich das Element erfolgreich geladen und anschließend weitere Benutzerinfos von Firebase, um zurückzukehren, dass alle als eine beobachtbare, welche das vollständige mutierte Profil enthält?
Ich bin besonders interessiert zu wissen, wie 'Best Practice' für diese Art von Szenario aussehen könnte.
Vielen Dank im Voraus! Ich hoffe, das ist klar genug, wenn nicht, bitte zögern Sie Verbesserungsvorschläge.
Gehen Sie durch das Problem aber noch nicht klar, was wollen Sie genau? –