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