【发布时间】:2021-06-08 09:27:48
【问题描述】:
我创建了一个使用 firestore(使用 angularfire 包装器)和 angular 的聊天应用程序,它正在工作。数据库结构是这样的。我对每个用户都有唯一的 ID。当有人(发件人)向其他人(收件人)发送消息时,我会将消息添加给发件人:
collection("messages") => doc(sender's ID) => collection(receiver's ID) => doc(message ID)
另外,我向接收者添加了相同的消息:
collection("messages") => doc(receiver's ID) => collection(sender's ID) => doc(message ID)
现在,当用户(发送者)打开与另一个用户(接收者)的聊天时,我将侦听器(valueChanges)附加到:
collection("messages") => doc(sender ID) => collection(receiver ID)
集合中的每条消息的结构如下:
message: 'string message'
profilePic: 'url for profile pic'
senderId: 'unique id of sender'
timestamp: some timestamp
使用此配置一切正常,但存在一些问题。
- 每当添加新消息时,“valueChanges”都会监听更改并将值分配给数组“chats”。 'chats' 数组与 *ngFor 一起使用来显示消息的内容。每当我收到更改时就会出现问题,整个消息列表都会重新呈现,包括个人资料图片。理想情况下,应该只呈现最近的更改。
- 没有办法(或者我想不到)查询每个用户的最新消息。
【问题讨论】:
标签: angular firebase angularfire2 angularfire