存储聊天信息最简单的方式可能是这样:
message:
-message1 {
"user1"
"user2"
"message"
"date"
}
-message2
-message3
当应用程序增长到庞大的规模(大量消息),并且在数据库上执行 .whereEqualTo 操作时,以这种方式构造聊天应用程序消息是否存在任何缺点?例如,是否存在使用数据库迭代所有消息的问题?
因为如果使用此方法存在问题,例如,我已经看到了一种结构化数据库的方法,它会将消息分隔在不同的聊天室中。chats: {
-chat1 {
"lastMessage"
"timestamp"
"users": {user1, user2}
}
-chat2
-chat3
}
messages: {
-chat1 {
"message"
"date"
}
}
但在这个例子中,添加新消息需要用户进行两次写操作:一次是写入新消息,另一次是在客户端更新chat
文档的lastMessage
和timestamp
,或者创建云函数在添加新消息时更新chat
文档的值。
那么,第一种选项有效吗?还是应该选择类似第二个例子的方法?