【发布时间】:2017-10-13 04:55:23
【问题描述】:
假设我的规则设置为仅对拥有的对象进行用户读/写,我想知道 firebase 客户端(IOS/Android)在设备中存储哪些数据?在这个例子中,它是否在设备上下载了不属于用户的数据,但只是阻止了它?或者只有用户拥有的对象才会下载到设备上。
有没有办法让一些子对象只保存在云中而不是本地?我担心设备中的数据库大小变得太大。
谢谢!
【问题讨论】:
标签: firebase firebase-realtime-database
假设我的规则设置为仅对拥有的对象进行用户读/写,我想知道 firebase 客户端(IOS/Android)在设备中存储哪些数据?在这个例子中,它是否在设备上下载了不属于用户的数据,但只是阻止了它?或者只有用户拥有的对象才会下载到设备上。
有没有办法让一些子对象只保存在云中而不是本地?我担心设备中的数据库大小变得太大。
谢谢!
【问题讨论】:
标签: firebase firebase-realtime-database
您的 Firebase 应用只能访问规则允许的数据库中的数据。安全性由 Firebase 实时数据库(而非应用)处理,因此只会下载允许用户访问的数据。
为了让您的应用能够处理存储在数据库中的数据,需要将其下载到设备上。默认情况下,数据会被缓存,因此即使您的设备暂时失去网络连接,您的应用程序仍然可以运行。如果您enable offline capabilities,应用程序只会将其存储在本地,以允许应用程序在没有可用网络时继续工作。
Firebase 应用会自动处理临时网络中断。缓存数据在离线时可用,并且 Firebase 会在网络连接恢复时重新发送任何写入。
当您启用磁盘持久性时,您的应用会将数据本地写入设备,以便您的应用可以在离线时保持状态,即使用户或操作系统重新启动应用也是如此。
Firebase 应用会自动为您处理所有这些功能。
本地缓存的大小很少需要担心,除非您要存储或下载大量数据,否则不建议这样做。如果您的数据库很大,您应该实施策略来限制查询只能通过filtering 或paginating 您的查询检索相关数据。
【讨论】: