我在我的 firebase 聊天应用程序中将此示例用于聊天室,如下所示:
let messageRef = db
.collection("channels").document("UID1")
.collection("threads").document("message1")
但是如果我执行此方法,我将看不到如何找到与聊天室相关联的用户,因为我会创建每个“roomA”/UID。 但是我怎样才能获得相同的“roomA”/UID 以供收件人引用以将消息保存到相同的位置?
最佳答案
我会将用户存储在用户集合中,然后将他们的用户 ID 存储在 channel 文档中,然后还将他们的 ID 与消息本身一起存储。
这可能看起来像这样:
Users (collection)
--- User1 (doc)
Channels (collection)
--- Channel1 (doc)
------ UsersInRoom (field within the user doc)
----------- ['User1', 'User2', 'User3']
--- Channel2
------ UsersInRoom
----------- ['User4', 'User5', 'User6']
--- Threads (collection within Channels collection)
------ Message1 (doc)
---------- Sender: User1
---------- Text: "Hi"
------ Message1 (doc)
---------- Sender: User2
---------- Text: "Hello"
通过这种结构,您可以轻松访问所有消息,您可以快速查询 channel 、 channel 的线程、任何消息,您可以看到发件人是谁,等等。
关于swift - 加载 Firestore 消息时如何引用正确的发件人和收件人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998757/