Datenbank: FirebaseWie Sie einen Benutzer aus der Datenbank Innenansicht
Ein Benutzer kann einen Beitrag hinzuzufügen, die ein bisschen wie folgt aussieht:
postKey
content: 'Content of the post',
date: 'Date of post',
author: 'authorKey' (author key is a login)
glaube ich nicht alle Benutzerinformationen innerhalb author
speichern soll weil der Benutzer eines Tages etwas in seinem Profil ändern würde. Ich speichere nur Benutzerschlüssel innerhalb author
und ich möchte diesen Benutzer erhalten, während Postdaten innerhalb der Ansicht drucken.
(Service) Das ist die Art, wie ich alle Beiträge bekommen (funktioniert richtig)
getPosts(): Promise<any> {
return new Promise(
(resolve) => {
this.af.database.list('/posts')
.subscribe(response => {
if(response.length > 0) resolve(response);
})
}
)
}
(Komponente) Hier habe ich assaign nur all diese Beiträge Array postet es Innenansicht zu drucken.
posts: any;
constructor(private homepageService: HomepageService) {
homepageService.getPosts().then(
response => {
this.posts = response.reverse();
});
}
(Ansicht) Mit Ausnahme allen Postdaten, die ich sehr leicht drucken können, würde Ich mag ein Benutzer von post.author bekommen Autor Daten wie Foto zu drucken, Vorname, Nachname usw.
<div *ngFor="let post of posts" class="post-body">
{{post.content}}
{{homepageService.getUser(post.author)?.email}}
</div>
Auf diese Weise möchte ich den Benutzer erhalten. Hier ist getUser Funktion
getUser(key): Promise<any> {
return new Promise(
(resolve) => {
this.af.database.object('/users/' + key)
.subscribe(response => {
resolve(response);
})
}
);
}
Ich weiß, dass Zeile falsch ist {{homepageService.getUser(post.author)?.email}}
, dass es keine then
Innenansicht ist, aber ich habe auch versucht, Asynchron-Rohr. Jetzt bin ich still. Wie soll ich das machen?
In diesem Fall meine Seite abstürzt. Beiträge werden nicht angezeigt und ich kann nichts tun, kann nicht klicken. Alles ist gefroren. (keine Fehler in der Konsole). Beim Lesen von '' 'ist dies das erwartete Verhalten, da Sie bei jedem Aufruf der Methode eine neue Instanz des Versprechens zurückgeben, die, wenn aufgelöst, die Änderungserkennung auslöst, die ein neues Versprechen abruft, das die Änderungserkennung auslöst. .. '' ' – elzoy
Was ist, wenn Sie die Observable zurückgeben, die Sie direkt vom Datenbankaufruf erhalten? (siehe meine aktualisierte Antwort) –
Ja, ich habe das gleiche getan und es funktioniert. Vielen Dank. – elzoy