我有chatrooms
,这是一个存储聊天室成员和标题的集合。我也有userchats
,它持有成员的uid,并以true
作为键/值来存储聊天uid:
chatrooms
- e1iqOnWeO2YTUCpUJ2O (1st chatroom)
- Members
- member 1 uid
- member 2 uid
- Title
- Hu19FkkW4Haoiw94OY4 (2nd chatroom)
- Members
- member 1 uid
- member 3 uid
- Title
...
userchats
- member 1 uid
- e1iqOnWeO2YTUCpUJ2O: true
- Hu19FkkW4Haoiw94OY4: true
- member 2 uid
- e1iqOnWeO2YTUCpUJ2O: true
- member 3 uid
- Hu19FkkW4Haoiw94OY4: true
我想根据userchats
中提供的数据显示聊天室。到目前为止,我有以下代码可以获取所有聊天室并将其显示给所有用户(无论它们是否属于其中)。
private chatrooms: Observable<Chatroom[]>;
private chatroomCollection: AngularFirestoreCollection<Chatroom>;
constructor(private afs: AngularFirestore) {
this.chatroomCollection = this.afs.collection<Chatroom>('chatrooms');
this.chatrooms = this.chatroomCollection.snapshotChanges().pipe(
map(actions => {
return actions.map(a => {
let data = a.payload.doc.data();
let id = a.payload.doc.id;
return { id, ...data };
});
})
);
}
我的尝试是在构造函数中包含以下代码,但它既不起作用也不抛出错误:
constructor(private afs: AngularFirestore) {
this.afs.collection('userchats').doc(this.currentUserId).get().subscribe(chatrooms => {
let chatroomId: string[] = Object.keys(chatrooms.data());
this.afs.collection<Chatroom>('chatrooms').doc(chatroomId[0]).snapshotChanges().pipe(
map(actions => {
//Not getting here
console.log(actions.payload.data())
return actions.payload.data() as Chatroom;
})
);
});
}
如果有帮助,我的数据库中没有设置任何任何规则。