为什么AngularFire2 Query不能与combinelatest或forkjoin一起使用

时间:2017-09-10 05:48:35

标签: firebase-realtime-database angularfire2

我在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;
    })

我缺少什么?

0 个答案:

没有答案