【发布时间】:2020-04-15 03:22:04
【问题描述】:
我有两个想要加入的集合。查看评论和用户。
这是我的服务中的代码:
getAll(reviewID) {
const allComments = this.af.collection<Review>(`reviews/${reviewID}/comments`, ref => ref.orderBy('dateCreated', 'desc'))
.valueChanges()
.pipe(
switchMap(reviews => {
const res = reviews.map((review: review) => {
return this.af.collection<User>('users', ref => ref.where('userID', '==', review.userID))
.valueChanges()
.pipe(
map(user => Object.assign(review, { user }))
);
});
return combineLatest(...res);
})
);
return allComments;
}
这是我的组件:
this.commentService.getAll(reviewID).subscribe(results => {
this.comments = results;
this.logger.log(this.comments);
});
这主要是有效的,但它似乎每隔一个评论返回用户数组。
例如:
0:
comment: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse id quam ut lacus tempor aliquam. Curabitur efficitur, lorem sit amet sodales finibus, erat arcu imperdiet dolor, eget ultricies arcu felis sit amet enim. Interdum et malesuada fames ac ante ipsum primis in faucibus."
dateCreated: Timestamp {seconds: 1549654515, nanoseconds: 0}
userID: "c8Y3q9Mn0sdfGFDgMWqh4GqJC5B2"
user: Array(0)
1:
comment: "this is the third comment"
dateCreated: Timestamp {seconds: 1549638673, nanoseconds: 0}
userID: "KEPBML9xlDfgedGZAslzOfOfbSwh2"
user: Array(1)
0: {avatar: "img.jpg", fullname: "Michael Jones", userID: "KEPBML9xlDfgedGZAslzOfOfbSwh2", username: "michaelj"}
2:
comment: "this is the second comment"
dateCreated: Timestamp {seconds: 1549562400, nanoseconds: 0}
userID: "NbPyKuTIB5dfGDGdVNmEB1h5YG2"
user: Array(0)
3:
comment: "this is the first comment"
dateCreated: Timestamp {seconds: 1549558800, nanoseconds: 0}
userID: "N2FhiRSJcdfGEDRgrCvPZa98bU4Im2"
user: Array(1)
0: {avatar: "img.jp", fullname: "Emily Jones", userID: "N2FhiRSJcdfGEDRgrCvPZa98bU4Im2", username: "emilyj"}
我已确认正在传递所有用户 ID。
我做错了吗? 我不确定我错过了什么,任何帮助将不胜感激。
【问题讨论】:
-
能否请您添加评论和用户集合的示例数据,以便我可以尝试。您能否具体说明您想要实现的目标?您想获得单个用户的所有评论吗?
-
我想获取所有带有用户数据的 cmets,以便显示有关发布评论的用户的信息。我最终通过将第二个
.collection更改为.doc来修复
标签: javascript angular google-cloud-firestore ionic4