我正在尝试构建一个由FirebaseObjectObservable构成的Observable,但首先我必须查询Firebase列表以获取该FirebaseObjectObservable的每个键ID。
我的数据结构
players {
player_1 {
carsKeys: {
car_id_1: true,
car_id_2: true,
car_id_3: true
.....
}
},
player_2 {
...
}
}
cars {
car_id_1 {
property_1 : '123',
property_2 : '456',
...
},
car_id_2 {
...
}
...
}
我希望只订阅一个Observable并获得与此类似的对象数组:
cars: Array[5]: [
{
id: car_id_1,
property_1 : '123',
property_2 : '456',
...
},
{
id: car_id_2,
.....
},
....
]
我的服务功能如下:
public getCars(player_id){
return this.db.list('players/' + player_id + '/carsKeys/')
.map(carsKeys => carsKeys
.map(key => this.db.object('cars/' + key)))
.flatMap(carsObjs => Observable.combineLatest(carsObjs))
}
我尝试了很多组合,但没有任何效果:我需要这个数据结构,我还需要与数据库同步。
答案 0 :(得分:0)
让我们看看我的问题是否正确。
这是代码示例。用firebase查询替换这些查询部分 https://jsbin.com/hokayilulu/edit?js,console,output
const players$ = Rx.Observable.of(players)
.map(x => players[Object.keys(x).find(x=> x === 'player_1')])
.map(x => Object.keys(x.carsKeys))
.switchMap(x => Rx.Observable.from(x))
.map(x => cars[x]);
let result = []
players$.subscribe(x => {
result.push(x);
console.log(result)
})