Firebase 脱机访问Firestore子集合

Firebase 脱机访问Firestore子集合,firebase,flutter,google-cloud-firestore,mobile-development,Firebase,Flutter,Google Cloud Firestore,Mobile Development,正在寻找有关我在Firebase中的数据结构的建议 我的应用程序:植物护理提醒 我认为基本数据结构可以是这样的 因此,用户可以有许多工厂,每个工厂可以有许多任务 我相信我会在Firestore中有一个顶级用户集合,然后每个userData文档都会有一个子集合plants。随后,每个工厂将有一个子任务集合 该应用程序将在一个屏幕上显示所有用户的工厂,然后用户可以单击工厂并查看任务 我希望用户能够离线一段时间,仍然能够访问所有内容 执行一个大查询来检索应用程序加载上的所有数据是否明智?这样做是为

正在寻找有关我在Firebase中的数据结构的建议

我的应用程序:植物护理提醒

我认为基本数据结构可以是这样的

因此,用户可以有许多工厂,每个工厂可以有许多任务

我相信我会在Firestore中有一个顶级用户集合,然后每个userData文档都会有一个子集合plants。随后,每个工厂将有一个子任务集合

该应用程序将在一个屏幕上显示所有用户的工厂,然后用户可以单击工厂并查看任务


我希望用户能够离线一段时间,仍然能够访问所有内容

执行一个大查询来检索应用程序加载上的所有数据是否明智?这样做是为了确保Firestore确实脱机时拥有所有缓存的子集合

还是在加载时执行查询以获取用户的植物子集合,以便他们可以看到自己拥有的东西,然后当他们单击植物时,执行另一个查询以获取该植物的任务子集合更好

如果用户可以看到一个工厂,然后离线并单击该工厂。是否可以在没有网络连接的情况下查询任务的plants子集合



抱歉解释不当,当Firestore进行浅层查询时,我试图用Firestore和嵌套子集合来解决脱机数据持久性问题。

Firestore的磁盘持久性功能就像缓存,维护应用程序最近加载的数据,以及所有尚未同步到服务器的本地写入操作

我希望用户能够离线一段时间,仍然能够访问所有内容

这与Firestore磁盘缓存的工作方式本质上并不匹配。要使其在您的用例中工作,您需要确保读取所有数据,这将提高读取操作和带宽消耗,并且还将使本地缓存的运行速度比需要的慢


如果您需要一个完全本地的数据库,而不是最近读取和本地修改的数据的缓存,Firestore可能不是最适合此用例的。请考虑使用您自己的本地数据库。

你好,弗兰克,我想我的用户案例主要是针对本地数据库。然而,我希望用户能够在任何地方登录并查看他们的数据(多个设备同步)。我觉得我可能需要专注于只将数据保存在Firestore中,而不是担心离线持久性。使其成为基于在线的应用程序,在没有连接的情况下限制功能。谢谢你的回复。