我正在使用React和Firebase实时数据库处理一对一聊天应用程序中的已读和未读消息状态。
我可以在数据库中为每个发送的消息存储seen:false的值,当接收者挂载组件(消息)时,再次向数据库发出请求并将“seen”值更改为“true”吗?
这里会有太多的数据库请求吗?
我可以在数据库中为每个发送的消息存储seen:false的值,当接收者挂载组件(消息)时,再次向数据库发出请求并将“seen”值更改为“true”吗?
这里会有太多的数据库请求吗?
在数据库中为每个发送的消息存储一个“已读”标记,当接收方加载该消息时再从数据库中请求并将标记更改为“已读”,这是一个好的做法吗?
我认为您不需要为每个消息都这样做。
假设您有用户1和用户2之间的私人对话。
用户1发送了两条消息:
Id: 1 Message: "hello"
Id: 2 Message: "how are you"
然后,User2查看您发送到服务器的消息:
User: 2 ChatID: abc LastViewedMessage: 2
User1回到消息界面,从服务器接收到User2的lastViewedMessage id。
我认为没有必要按“每条消息”的方式存储它——除非您特别需要将某些消息标记为已查看。
您也可以存储消息的时间戳和“最后查看时间”,而不是消息id。