swift - 加载 Firestore 消息时如何引用正确的发件人和收件人

标签 swift firebase google-cloud-firestore

我在我的 firebase 聊天应用程序中将此示例用于聊天室,如下所示:

let messageRef = db
    .collection("channels").document("UID1")
    .collection("threads").document("message1")

enter image description here

但是如果我执行此方法,我将看不到如何找到与聊天室相关联的用户,因为我会创建每个“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/

相关文章:

ios - Swift 3 - adaptivePresentationStyle 永远不会被调用

swift - 如何将多个项目添加到词典中?

ios - 是否允许通过同一个NSManagedContext的performBlock传递NSManagedObject?

swift - Firebase 存储下载在第一次运行时无法快速完成

java - 如何初始化 Cloud Firestore Bean 以在所有包中使用?

iOS:处理方向更改而不在 View Controller 上启用横向模式

firebase - Flutter firebase 软件包版本在消息传递、核心和分析之间发生冲突

Firebase 存储 url,新文件保持相同的访问 token

firebase - 如何从查询的文档中获取字段 Flutter/Firestore

java - 文档的路径对 Firestore 自动生成的随机 ID 有影响吗?