Firebase Realtime Database可写入但无法读取数据该如何解决?
问题根因
- 安全规则已过期失效:你配置的Firebase Realtime Database规则中,读写权限的生效截止时间戳
1633017600000对应公历2021年10月1日,当前时间远超过该阈值,所有来自客户端的读写请求都会被服务端直接拒绝。你观察到的「可以写入新增数据」只是客户端本地缓存的临时表现,实际写入请求并未被服务端持久化存储。 - 未监听请求失败回调:你当前的代码仅为数据读取请求注册了
addOnSuccessListener成功回调,当请求因权限不足被服务端拒绝时,会触发失败回调分支,你未对该分支做监听处理,因此会产生「程序未进入回调逻辑」的错觉。
修复方案
- 调整数据库安全规则,测试阶段可临时使用全开放规则调试,生产环境请务必替换为匹配业务场景的精细化权限规则,避免数据泄露风险:
{ "rules": { ".read": true, ".write": true } }
- 补充请求的异常监听逻辑,方便后续快速定位问题:
val database: FirebaseDatabase = FirebaseDatabase.getInstance() val myRef: DatabaseReference = database.getReference("Event") myRef.child(name).get() .addOnSuccessListener{ if(it.exists()){ status = "checked" existsss = true } else { status = "not match" } } .addOnFailureListener { e -> // 可在此处打印错误信息排查问题 status = "request failed: ${e.message}" }
内容的提问来源于stack exchange,提问作者SHU JIUN
相关产品推荐
相关产品推荐

