【发布时间】:2019-05-29 05:17:54
【问题描述】:
存储聊天消息最简单的方法大概是这样的:
message:
-message1 {
"user1"
"user2"
"message"
"date"
}
-message2
-message3
当应用程序变大(大量消息)并且使用.whereEqualTo 完成数据库操作时,以这种方式构建聊天应用程序消息有什么缺点吗?就像数据库遍历所有消息一样?
因为如果这种方法存在问题,例如,我已经看到了这种结构化数据库的方式,它会将消息隔离在不同的聊天室中
chats: {
-chat1 {
"lastMessage"
"timestamp"
"users": {user1, user2}
}
-chat2
-chat3
}
messages: {
-chat1 {
"message"
"date"
}
}
但在本例中,添加新消息需要用户进行 2 次写入操作,一次写入新消息,一次使用新的 lastMessage 和 timestamp 客户端更新 chat 文档,或者创建云函数以添加新消息时,使用新值更新 chat 文档。
那么,第一个选项是否有效,还是我应该使用第二个示例?
【问题讨论】:
-
有兴趣的也可以看看这个chat tutorial。这是Firestore database schema。
标签: android firebase google-cloud-firestore