微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从不同的集合 Firestore 构建模型 - Swift 以编程方式

如何解决从不同的集合 Firestore 构建模型 - Swift 以编程方式

我正在使用 MVC 模式来部署 iOS 应用程序。 当我实现像 whatsapp 这样的聊天功能时,我感到困惑:

基本思想是,我需要使用 Firestore 集合文档中存在的所有用户填充 collection view,向发送的最新消息添加侦听器。

集合的架构如下所示:

User_lastMessages(集合)

|

用户 ID(文档)

|

聊天用户(集合)

|

finalDocumentId(文档)

此最新文档包含:

-user id
-lastMessageSent
-timestampLastMessage
-username 

我需要完成的 UI 表示是这样的:

UI

1)usernamelastmessage 来自我之前提到的集合

2)ImageView(白色方块)来自另一个集合,我可以通过用户的 uid 检索它

问题:您在单元格右侧看到的数字来自另一个集合,并且会不断变化。我如何确定每当它更改时 UI 都会相应更改?

我很困惑,使用不同的 Firestore 集合文档构建模型是一种糟糕的方法,还是模型必须仅由一个 Firestore 文档组成。

解决方法

您可以轻松地在模型中使用多个文档。在您的情况下,适当的配置是:

  1. 您的视图控制器加载一个文档
  2. 列表中的每个单元格负责加载另外两个文档(包含图像视图和消息计数)。您可以附加侦听器以确保此信息实时更改

但是,在部署之前,您确实需要考虑那些“读取”操作的数量。在 Firestore 中设计架构时,您应该始终考虑您的用例并尽量减少不必要的读取。

例如,您可以有另一个名为“聊天”的集合,其中包含:

  1. user1_id
  2. user2_id
  3. number_of_messages
  4. chat_icon
  5. unique_chat_id

在这种情况下,一个简单的查询“where user1_id == ID”会给你一个包含你需要的所有信息的数组。

然后消息可以包含一个字段 chat_id,它使您能够加载属于特定聊天的所有消息。

我上面概述的不一定是最好的或最优的模式。但是,我建议您观看 Firestore 视频(它们很棒):https://www.youtube.com/watch?v=haMOUb3KVSo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。