2016-09-07 5 views
0

Ich habe eine einfache Funktion, die meine Firebase-Datenbank ruft, um eine Liste von Elementen zu erhalten. Ich suche nach einer einfachen Möglichkeit, diese Elemente nach location.liked === true zu filtern. Dies konnte ich jedoch nicht mit der herkömmlichen Filterarray-Methode erreichen. Hat einer von euch ein Gespür dafür, wie das gemacht werden könnte?Filter beobachtbarer Wert

this.locations = af.database.list('/trips') 
    .map((locations) => { 
    return locations.map((location) => { 
     location.liked = af.database.object(`/likes/${this.uid}/${location.$key}`); 
     return location; 
    }) 
    }); 

Mein erster Ansatz die folgende Logik

this.filteredResult = locations.map((locations) => { 
return locations.filter((location) => { 
    return location.liked 
}) 
}) 

jedoch zu verwenden war, das gibt mir den Fehler, dass jeder [] nicht

+0

Wie sieht Ihre Funktion mit diesem Code aus? – micronyks

+0

Es ist eigentlich die volle Funktion oben im Konstruktor für meine Klasse platziert. Es ist nichts wert, dass ich Standorte in der Klasse als Standorte definiert habe: Observable ; – user3642173

Antwort

0

Sie so etwas wie dies versucht haben, gefiltert werden:

this.locations = af.database.list('/trips').filter((location) => { 
    return location.liked === true; 
}); 

prüfen dieses Beispiel:

https://plnkr.co/edit/U9p7LHFsYIXeFiJkIiRs?p=preview

+0

Danke für die Antwort. Das gibt den folgenden Fehler zurück: Property "liked" existiert nicht auf Typ "any []". Ich denke, der Grund könnte sein, dass af.database.list eine beobachtbare – user3642173

+0

@ user3642173 zurückgibt. In diesem Fall ändern Sie einfach den Code in af.database.list ('/ trips'). Map (locations => locations.filter ((location) => {zurück location.liked === true;})) –

+0

Danke Luis. Dies ist, was ich anfangs versuchte, aber es gibt den gleichen Fehler zurück. Kann es so sein, mit dem Ergebnis von location.liked auch eine beobachtbare sein? – user3642173