我正在使用聊天应用程序。我的 Firebase 云存储看起来像这样
消息 = 保存来自每个用户的完整消息,从服务发布开始的每条消息都聚集在这里。它可能包含 1,000,000,000,000 条 ~ 消息
Messages | msg1 | msgID = msg1
| msg2 | roomID = room03
| msg3 | content = "HELLO"
| ....... msg100,000,000 |
Rooms | room01 | roomID : room01
| room02 | memberIDs : user1 , user2 , user3
| room03 | messageIDs : msg1001 , msg2088 , msg991090
我所知道的:我可以轻松地从这数十亿条消息中获取 1 条消息
db.collection("Messages").whereField("roomID", isEqualTo: "msg1001")
.getDocuments() { (querySnapshot, err) in
我不知道,我需要知道:如何获取与“一个房间”相关的所有“消息”
我想要的:一个包含 1,000 条消息的数组,按时间戳排序
例如,room100 包含一个 messageID 数组,最多 1,000 个 messagesID
| room100 | messageIDs : msg1001 , msg2088 , msg991090 ..... msg9999999
我应该这样取吗?
for a in messageIDs {
db.collection("Messages").whereField("roomID", isEqualTo: "msg1001")
.getDocuments() { (querySnapshot, err) in ......
}
}
我想不会,这会创建多个 1,000 个并行线程。我无法预测哪个节点会先完成,我会得到最终结果为无序的消息数组
或者我应该这样取吗?嵌套请求,用于完全排序的消息
db.collection("Messages").whereField("roomID", isEqualTo: "msg1001")
.getDocuments() { (querySnapshot, err) in
db.collection("Messages").whereField("roomID", isEqualTo: "msg1002")
.getDocuments() { (querySnapshot, err) in
db.collection("Messages").whereField("roomID", isEqualTo: "msg1003")
.getDocuments() { (querySnapshot, err) in
*....... and so on , 1000 nested requests*
}
}
}
}
}
获取、验证和比较多个 groupID 的正确方法是什么????????????????