Firebase同账号多设备登录时数据不同步问题及解决方案
解决Firebase跨设备数据不同步问题
我之前也碰到过一模一样的坑!用Firebase做身份验证和运动数据存储,设备1存完数据,设备2刷烂了都看不到,退了重登也没用,后来终于找到解决方案了:
- 核心解决方法:在你的运动数据引用上调用
keepSynced(true)方法,这个方法需要传入一个布尔值,设置为true后,该路径下的数据会始终保持与云端同步。
举个实际代码例子(以JavaScript为例):
// 获取当前用户的运动数据节点引用 const userActivityRef = firebase.database().ref(`users/${firebase.auth().currentUser.uid}/activity`); // 启用持续同步 userActivityRef.keepSynced(true);
原理说明
Firebase Realtime Database默认会依赖本地缓存来提升性能,有时候即使云端数据更新了,客户端如果没有主动触发同步,就会一直读取旧的缓存数据。而keepSynced(true)会强制Firebase保持该节点的数据实时同步,不管当前有没有活跃的数据监听,这样跨设备更新后,另一台设备就能及时获取到最新数据,刷新或重新登录也不会再出现数据不显示的问题。
亲测这个方法完美解决了我的问题,你可以试试在初始化数据引用的地方加上这一行代码~
内容的提问来源于stack exchange,提问作者dextersgrownupbeard
相关产品推荐
相关产品推荐

