javascript - AngularFire - Firestore - 如何获取子集合并合并到 HTML 中

标签 javascript google-cloud-firestore angularfire5

我目前有一个场景,我有一组已成功获取的问题。在 firestore 中,每个问题 (issues > issuesID) 都有一个名为 images 的子集合。

在该集合中,每个图像都有文档 ID。 (问题 > 问题 ID > 图像 > 图像 ID)。我有一个显示所有问题的页面,并且我还想显示每个问题的所有相关图像。

在下面的 HTML 中,我添加了一条注释,说明我希望问题图像的去向。

期望的结果:

  • 第 1 期
    • 第 1 期图片
  • 第 2 期
    • 第 2 期图片

等等

获取问题

 this.issuesCollection = this.afs.collection<any>(`users/${this.userID}/projects/${this.project_id}/issues`, ref => ref.orderBy('issue_order'));
      // this.issues = this.issuesCollection.valueChanges();   
      this.issues = this.issuesCollection.snapshotChanges().pipe(
        map(actions => actions.map(a => {
          const data = a.payload.doc.data();
          const id = a.payload.doc.id;
          return { id, ...data };
        }))
      );

HTML

<ul>
   <li *ngFor="let issue of issues | async">
      {{issue.issue_title}}
      <ul>
         <li>
             <!-- THIS IS WHERE I WOULD LIKE THE IMAGES PER ISSUE TO GO -->      
         </li>
      </ul>
    </li>
</ul>

图像集合引用 这是图像的位置,其中 id 是问题的 ID。这还没有连接,但是图像的位置。

this.imagesCollection = this.afs.collection<any>(`users/${this.userID}/projects/${this.project_id}/issues/${id}/images`);
this.images = this.imagesCollection.snapshotChanges()

最佳答案

Firebase 中有一个名为 Collection group query 的新功能,这绝对对您的情况有帮助。但不幸的是,我认为这还没有在 angularfire2 中实现。

您可以使用RxJS MergeMap

  const collection = this.firestore.collection('users');
  return  collection.valueChanges.pipe(
    mergeMap( (users: User[]) =>  
               this.firestore.doc(`stories/${users[0].uid}`).
                        valueChanges().pipe(map(
                          (storie) => Object.assign({}, {users[0].uid, ...users[0], ...stories}
                      ))
           ))
   );

关于javascript - AngularFire - Firestore - 如何获取子集合并合并到 HTML 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168744/

相关文章:

javascript - Q.all block 中的所有功能均未得到 promise

android - 将Firebase数据库转换为Cloud Firestore

ios - 如何在 Swift 中从 Cloud FireStore Firebase 访问特定字段

angular - Firestore 事件文档快照监听器中断排序

angular - 如何通过 Angularfire 5.0 从 Firebase 列表中获取 key

javascript - 使用 AngularJS 进行多服务 http 调用

javascript - 强制风景模式锁定,仅允许肖像

javascript - JQuery 表选择最近的空

typescript - Firestore snapshotChanges DocumentChangeType "removed"从未发送

Angular 和 AngularFire 5 从文档中检索数据