2016-09-07 2 views
0

У меня есть простая функция, которая вызывает мою базу данных firebase для получения списка элементов. Я ищу простой способ фильтрации этих элементов по location.liked === true. Тем не менее, я не смог выполнить это, используя традиционный метод массива фильтров. У любого из вас есть чувство, как это можно сделать?Значение наблюдаемого фильтра

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

Мой первоначальный подход был использовать следующую логику

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

Однако, это дает мне ошибку, что любое [] не может быть отфильтрован

+0

Как выглядит ваша функция, содержащая этот код? – micronyks

+0

На самом деле это полная функция, указанная выше в конструкторе для моего класса. Нет ничего, что я определил местоположения в классе как места: Observable ; – user3642173

ответ

0

Вы пробовали что-то вроде этого:

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

Проверить этот пример:

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

+0

Спасибо за ответ. Это возвращает следующую ошибку: свойство «понравилось» не существует в типе «any []». Я думаю, причина в том, что af.database.list возвращает наблюдаемый – user3642173

+0

@ user3642173. В этом случае просто измените код на af.database.list ('/ trip'). Map (locations => locations.filter ((location) => {return location.liked === true;})) –

+0

Спасибо Луис. Это то, что я изначально пытался, но он возвращает ту же ошибку. Может ли это быть так. С результатом от location.liked также является наблюдаемым? – user3642173

Смежные вопросы