实际上我的Firestore集合如下所示:
user :
|-> 0000 (uid)
|-> avatar : 'url'
|-> name : 'josh'
|-> 1111
|-> avatar : 'url'
|-> name : 'steve'
[...]
follow :
|-> 0000
|-> 1111 : true
|-> 8888 : true
[...]
message :
|-> 0000
|-> 8888
|-> 1264978800 (timestamp)
|-> message = "hello"
|-> 1264978987
|-> message = "How are you"
|-> 8888
|-> 0000
|-> 1264914253
|-> message = "hey dude "
|-> 1264975895
|-> message = "fine and you?"
如果我想获取个人资料以及0000和8888之间的对话(例如,获取他们的头像),我需要:
- 检查他们的朋友
- 是,收到0000
- 得到8888的消息
- 获得0000个人资料
- 获取8888个人资料
如果我要列出所有对话的列表0000,则需要执行以下操作:
- 检查所有用户是否知道他们是否是朋友
- 为每个朋友获取个人资料
- 对于每个朋友,获取消息列表。
这是非常简单的查询,例如,它比mysql中的查询重。
有没有办法不进行所有这些查询?我的数据库模式好吗?
感谢帮助。