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