Ich habe diese Funktion, die einige Benutzerdaten aus Firebase aggregiert, um eine "Freundschaftsanfrage" Ansicht zu erstellen. Beim Laden der Seite wird die korrekte Anzahl der Anfragen angezeigt. Wenn ich auf "Akzeptieren" klicke, wird die korrekte Verbindungsanforderung aktualisiert, die dann signalisiert, diese Funktion erneut auszuführen, da der Benutzer sie abonniert hat. Das einzige Problem besteht darin, dass, sobald alle Freundschaftsanfragen akzeptiert sind, der letzte verbleibende Benutzer in der Liste bleibt und nicht verschwindet, obwohl sie bereits akzeptiert wurden.Angular 2 Observables - Leere Antwort auf Aktion zeigt immer noch Daten im Array
Hier ist die Funktion Ich verwende die Anfragen zu erhalten:
getConnectionRequests(userId) {
return this._af.database
.object(`/social/user_connection_requests/${userId}`)
// Switch to the joined observable
.switchMap((connections) => {
// Delete the properties that will throw errors when requesting
// the convo keys
delete connections['$key'];
delete connections['$exists'];
// Get an array of keys from the object returned from Firebase
let connectionKeys = Object.keys(connections);
// Iterate through the connection keys and remove
// any that have already been accepted
connectionKeys = connectionKeys.filter(connectionKey => {
if(!connections[connectionKey].accepted) {
return connectionKey;
}
})
return Observable.combineLatest(
connectionKeys.map((connectionKey => {
return this._af.database.object(`/social/users/${connectionKey}`)
}))
);
});
}
Und hier ist der entsprechende Code in mein Eckige 2 Ansicht (mit Ionic 2):
ionViewDidLoad() {
// Get current user (via local storage) and get their pending requests
this.storage.get('user').then(user => {
this._connections.getConnectionRequests(user.id).subscribe(requests => {
this.requests = requests;
})
})
}
Ich fühle mich Ich mache etwas falsch mit meiner beobachtbaren und deshalb ist dieses Problem passiert. Kann jemand das vielleicht etwas beleuchten? Danke im Voraus!
Haben Sie sichergestellt, dass mit 'this.requests = Anfragen,' ein leeres Array wird schließlich empfangen und übertragen? – cartant
Eigentlich ist es komisch. Ich schaue mir die Datenbank an und das "akzeptierte" Feld wird wahr sein, aber was auch immer das letzte Element im Array ist, es bleibt einfach dort. Es sieht nicht so aus, als würde das Subscribe-Signal ausgeben, wenn die Map-Funktion keine Schlüssel zum Iterieren über –