【发布时间】:2021-07-28 08:28:02
【问题描述】:
我有一个相当奇怪的问题,即当我订阅 latestMessageCollection 时 - 当我在 Firestore 中添加新文档时 - 我得到两个响应。应该有一个。
ngOnInit() {
this.getRooms();
this.chatList.sort(function compare(a, b) {
const dateA = new Date(a.lastMessage.date);
const dateB = new Date(b.lastMessage.date);
return dateB.getTime() - dateA.getTime();
});
}
getRooms() {
this.communicatorService.getRooms().subscribe((rooms) => {
this.chatList = [];
rooms.forEach((room, index, array) => {
console.log(room.room);
const latestMessageCollection = this.firestore.collection(`chat/rooms/${room.room}`, ref => ref
.orderBy('createdAt', 'desc')
.limit(1)
)
.valueChanges({idField: 'id'});
latestMessageCollection.subscribe((latestMessage) => {
console.log('CHANGE', index, latestMessage[0]);
const lastMessage = latestMessage[0];
if (!this.getChatByRoom(this.chatList, room.room)) {
this.avatarsToLoad.push({
room: room.room,
avatar: room.sender.avatar
});
this.chatList.push({
room: room.room,
user: {
id: room.sender.id,
name: room.sender.name + ' ' + room.sender.lastname,
avatar: room.sender.avatar,
description: ''
},
lastMessage: {
user: latestMessage.length !== 0 ? lastMessage.user : 0,
content: latestMessage.length !== 0 ? lastMessage.message : '',
date: latestMessage.length !== 0 ? lastMessage.createdAt.toDate() : new Date('0000-00-00 00:00')
},
unreadMessagesCount: 0
});
}
});
if (index === array.length - 1) {
}
});
});
}
这里的 console.log 应该只出现一次,而不是两次。
有人可以解释为什么会这样以及如何预防?
【问题讨论】:
标签: angular firebase google-cloud-firestore angularfire