如何使用其父集合访问嵌套的Firebase集合

时间:2020-08-10 13:25:06

标签: angular typescript firebase google-cloud-firestore angularfire2

我正在开发一个论坛应用程序,用户可以在其中提出问题并获得答案(每个答案都有自己的特点) 我想要的是当我访问答案时我想获得它的子集合。但是我不知道如何访问“喜欢”集合。我有谷歌,并找到了集合组查询的方法,但是对火力地堡没有足够的了解。有人可以帮助我获得“赞”

getcomments(id) {
  this.commentcollection = this.questioncollection.doc(id).collection<Comment>('answer');
  this.comments = this.commentcollection
    .snapshotChanges()
    .pipe(map(changes =>{
      return changes.map(a=>{
        const data = a.payload.doc.data() as Question;
        data.id = a.payload.doc.id;
        return data;
      })
    }));
  return this.comments;
}

这里有评论集,

<li *ngFor="let comment of selectedComment |async">
  <div class="comment-main-level">
    <div class="comment-box">
      <div class="comment-head">
        <span>{{comment.time.toDate() | date: 'dd MMM hh:mm'}}</span>
        <i>Likes</i>
        <i (click)="likepost(comment.userID,comment.id)" class="fa fa-thumbs-up"></i>
        <i (click)="editComment($event, comment)" *ngIf="comment.userID==authService.currentUserId" class="fa fa-pencil-alt">  </i>
        <i (click)="deleteComment(comment.id)" *ngIf="comment.userID==authService.currentUserId" class="fa fa-trash-alt"></i>
      </div>
      <div class="comment-content">
        {{comment.answerBody}}
      </div>

这是我在html上显示评论的位置,我想在标记处显示每个评论。 我如何获得收藏。 enter image description here

1 个答案:

答案 0 :(得分:0)

在我看来,您可以像访问answer函数中的getcomment集合一样进行操作。嵌套文档集合可以通过collection方法访问,嵌套文档集合中的嵌套文档可以通过doc方法访问。可以重复一遍,直到达到结构的最后一个级别-

parentCollectionReference.doc(<docid>).collection(<nestedCollectionId>).doc(<nestedDocId>).collection(<collectionNestedInNestedDoc>).doc... etc.

我了解您将获得用户将选择的答案的文档ID。可以说它的anwserId。您也有对answer集合的引用,因为您已经在getcomment中访问它了-可以说它是this.commentcollection。逻辑将与getcomment方法中的逻辑完全相同。您必须参考正确的子集合的主要区别。伪代码将如下所示:

this.likeCollection = this.commentcollection.doc('anwserId').collection<Likes>('likes');

其余所有逻辑与getcomment函数类似。