Для того, чтобы получить данные в виде массива от поставщика вам нужно вернуть обещание, которое будет возвращено, как только firebaseListObservable
событие запускается с возвращать данные.
В поставщике .ts
getData(fbPath): Promise<any> {
return new Promise(resolve => {
this.db.list(fbPath).subscribe(data => {
resolve(data);
})
})
}
Здесь обещание решает когда data
населен и возвращает массив с легким доступом к $value
и $key
свойствам. Который идеально подходит для создания условных или сложных запросов или поставщика услуг с родовыми свойствами (в отличии от запрашивая снимок firebaseListObservable
непосредственно)
В контроллере, то вы можете написать что-то вроде
this.providerName.getData('users').then(data => {
console.log('data',data);
})
Это будет возвращает объект буквального со значениями
- $ существует
- $ ключ
- $ Значение
Так что теперь, если вы хотите матч условно можно перебрать в data
с условием соответствия на $key
стола users
if(myUserIdVar === data.$key){ // do something here };
опрятнее синтаксис можно найти, используя библиотеку как lodash Где, например, если вы хотите, условие, чтобы соответствовать сохраненный идентификатор, скажем firebase.auth().currentUser.uid
вы можете сделать простой _.find
import { find } from 'lodash';
import * as firebase from 'firebase'; // Or just the firebase auth stuff
...
let filteredUser = find(data, ['$key', firebase.auth().currentUser.uid])
Значение $key
будет равно значению |__ (user_id)