我在Firebase中有两个简单列表。 一个是帖子列表,另一个是图像列表。 当图像属于帖子时,它上面设置了一个指向帖子的postKey。
E.g。
posts: {
$key: 'P1': {
name: 'a post'
}
}
images: {
$key: 'I1': {
name: 'image one',
postKey: 'P1'
},
$key: 'I2': {
name: 'image two',
postKey: 'P2'
}
}
现在,我想编写一个简单的查询来获取帖子及其所有相关图像
所以我设置了两个observable,其中一个是查询并使用combineLatest。 (理想情况下我会使用forkJoin - 但需要首先使用它)
但它不起作用 - 观察者永远不会发动:
let key= 'P1';
const imagesQuery$ = this.db.list(this.IMAGES, {
query: {
orderByChild: 'postKey',
equalTo: key
}
});
const posts$ = this.db.object(`${this.POSTS}/${key}`);
return Observable.combineLatest(posts$, imagesQuery$, (post, images) => {
post.images= images.map(image=> image);
return post;
})
但是,如果我将查询更改为简单列表,它就可以工作 - 虽然当然没有过滤,所以所有图像都分配给帖子。
let key= 'P1';
const images$ = this.db.list(`${this.IMAGES}`);
const posts$ = this.db.object(`${this.POSTS}/${key}`);
return Observable.combineLatest(posts$, images$, (post, images) => {
post.images= images.map(image=> image);
return post;
})
我缺少什么?