我是Firebase实时数据库的新手,来自关系型数据库背景.我设计了一个有很多 comments 的帖子 struct ,但我不知道如何加载它们.下面是该集合中的一条记录:

{
   _id: ObjectId("63173b1411db4b2f8e32f3cf"),
   title: "How to load data in mongoDB",
   comments: [
        {
            userId: ObjectId("63173b1411db4b2f8e32fcfb"),
            comment: "Thanks",
        },
        {
            userId: ObjectId("63173b1411db4b2f8e323fcb"),
            comment: "Nice Post",
        },
        ...
   ]
}

现在当有数以亿计的 comments 时,我应该如何加载它们,因为如果我一次加载它们,需要花费大量的时间和空间.这个问题的最佳解决方案是什么?

推荐答案

我设计了一个有很多 comments 的帖子 struct ,但我不知道如何加载它们.

你拥有的最好的 Select ,就是逐步加载 comments .这种做法称为分页.这意味着您需要以较小的块逐步加载数据.这个主题以前已经讨论过很多次了,这个问题已经有了很多针对实时数据库的解决方案:

现在当有数以亿计的 comments 时,我应该如何加载它们,因为如果我一次加载它们,需要花费大量的时间和空间.这个问题的最佳解决方案是什么?

您不可能一次加载如此庞大的数据量.最有可能的是,您最终会得到一个OutOfMemoyError.除此之外,我认为没有人会对阅读数亿条 comments 感兴趣.

然而,如果您考虑在某个时间点try 使用Cloud Firestore,我认为这个答案会有所帮助:

如果您想更进一步并try 使用Jetpack Compose,那么我认为这个参考资料将会有所帮助:

How to implement pagination in Firestore using Jetpack Compose?

Ios相关问答推荐

iOS SwiftUI需要不带箭头显示弹出窗口""

如何在SwiftUI中扩展双击的可检测区域?

在某些情况下,UIHostingController在自动调整时不能调整大小

在SwiftUI中动态隐藏列表的空部分

当重新呈现UI时,嵌套的 struct 值如何与@Observable一起工作?

在最新版本的 iOS 中,设备上的Localized.strings文件发生了什么变化?

如何解决错误 HE0004:无法在 Visual Studio 2022 中加载框架ContentDeliveryServices

具有线性渐变的 SVG textPath 在 Safari 中损坏

我正在try 制作一种 Select 器样式,例如设置中的外观 Select 器

在所有 tableview / collectionview 中禁用滚动指示器

TextField 重复输入 SwiftUI

如何在 SwiftUI 的列表中使用带有 swipeActions 的 NavigationLink

在使用 Github Actions 时,我面临权限被拒绝错误

try 在 iOS 中分发 Flutter 应用程序时出现Invalid Provisioning Profile Signature错误

将 SwiftUI 与 @AppStorage 和动态函数调用一起使用

如何在 Swift 中从另一个视图控制器将元素附加到数组中

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

检测 iPhone 应用程序中是否存在摄像头?

如何从一个特定的视图控制器中隐藏导航栏

Info.plist 实用程序错误:无法打开 Info.plist,因为没有这样的文件