我正在为我玩的在线浏览器游戏制作朋友列表镀铬扩展程序。一个特点是朋友可以互相聊天。我正在使用的数据库名为firebase,它以JSON树格式存储数据。
我的数据库具有以下结构:
Users
|
|_USER1
| |
| |__FRIENDS
|
|_USER2
|
|__FRIENDS
我正在试图弄清楚将聊天存储为此数据库的最佳方式。我现在倾向于的选项只会在Users目录的两个部分中保留两个用户聊天的副本,如下所示:
Users
|
|_USER1
| |
| |__FRIENDS
| |
| |__CHATS
| |
| |__chat w/USER2
|
|_USER2
|
|__FRIENDS
|
|__CHATS
|
|__chat w/USER1
这样就可以在每条消息上发送,我必须更新两个对象,每个用户部分一个。请注意,由于树被格式化为“键/值”对,因此在每个用户的CHAT部分中,键将是另一个用户的名称,而值将是发送的消息列表。
这是组织这样一个数据库的好方法吗?游戏非常小,所以我不期待大量的流量。
答案 0 :(得分:2)
对于Firebase数据库(以及大多数NoSQL数据存储),它通常最适合展平您的数据。
Users
|
|_USER1
| |
| |__FRIENDS
|
|_USER2
|
|__FRIENDS
UserChats
|
|_USER1
| |
| |__chat w/USER2
|
|_USER2
|
|__chat w/USER1
这样您就可以查看用户的好友列表,而无需加载他们的聊天列表。
另请参阅此答案,了解构建1:1聊天室标识符的便捷方案:Best way to manage Chat channels in Firebase