我正在尝试理解和修复角度聊天应用程序的代码,该应用程序应显示用户在特定聊天中是否有未读消息。
每当聊天室收到一条新消息时,都会有一个未读计数器,该计数器显示仍有多少条未读消息。但是,我在了解onSnapshot()
和subscribe()
的实际工作方式时遇到了麻烦,因为我在其他方法中使用它们没有问题。
这是我的代码,用于加载用户的会话,上面带有unread
计数器:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> | Promise<any> | any
{
return new Promise((resolve, reject) => {
this.afs
Promise.all([
this.getUser2(),
]).
then(
([chats2 ]) => {
this.chats = chats2;
resolve();
},
reject
)
});
}
这是我的getUsers2
函数,位于同一文件中。
getUser2(): Promise<any>
{
return new Promise((resolve, reject) => {
this.afs.collection('company')
.doc('id')
.collection('users', ref => ref.where('id', '==', '5725a6802d10e277a0f35724'))
.snapshotChanges()
.subscribe((response: any) => {
return response.map(a => {
const data: Object = a.payload.doc.data();
const id = a.payload.doc.id;
console.log(data)
resolve(data);
})
}, reject);
});
}
我不确定在更改数据库中的unread
计数器值时为什么不实时更新我的网站。我认为它与第一个Promise方法有关,因为我没有在其他用于更新实时数据的功能中使用它。