【发布时间】:2020-01-17 15:14:15
【问题描述】:
我正在创建一个应用程序,用户可以在其中创建组。群组集合存储在每个用户内部,如果群组广告成员的所有者对应的用户 id 和角色仅保存在群组集合中。因此,当所有者访问组成员时,我希望显示在另一个集合中的用户的完整信息。
这是我的 firestore 数据库中的两个集合
this.afs.collection(`users/${ownerId}/groups/${gid}/users`)
this.afs.doc(`users/${ownerId}`) //full user data
这是我在我的服务中访问用户的方式
getGroupUsers(gid, ownerId) {
return this.afs.collection(`users/${ownerId}/groups/${gid}/users`).snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data();
const userId = a.payload.doc.id;
return { userId, ...data };
})
)
);
}
这里userId 是每个用户的唯一ID,我希望向...data 对象添加更多数据。我尝试了很多方法都失败了,这就是我试图实现的目标
getGroupUsers(gid, ownerId) {
return this.afs.collection(`users/${ownerId}/groups/${gid}/users`).snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data();
const userId = a.payload.doc.id;
//return { userId, ...data };
return this.afs.doc(`users/${userId}`).valueChanges().pipe(
map(userData => {
return {userId, ...data, ...userData}
})
)
})
)
);
}
我使用angular 8.1.2 和Rxjs 6.4.0。
请帮忙。
【问题讨论】:
标签: angular firebase google-cloud-firestore angularfire2