Android Firebase 从子节点获取父节点及用户数据部分字段为null问题求解
Firebase字段读取null问题解决方案
- 核对数据库字段名:本地代码读取用的字段名必须和Firebase数据库中存储的字段完全一致,大小写、拼写都不能有偏差。email能正常读取大概率是因为你直接调用了Firebase Auth自带的
email字段,姓名、手机号属于自定义存储字段,拼写错配是最高发的原因。 - 校验节点读取路径:如果你需要从子节点获取父节点数据,要确认父节点引用的层级正确,以Realtime Database为例,参考写法:
// 拿到子节点快照后获取父节点引用 DataSnapshot parentSnap = childSnapshot.getParent(); // 按字段读取值,字段名需和库内完全匹配 String userName = parentSnap.child("userName").getValue(String.class); String phoneNum = parentSnap.child("phoneNum").getValue(String.class); String email = parentSnap.child("email").getValue(String.class);
- 检查读权限配置:确认当前登录用户对姓名、手机号所在的节点有读权限,你可以先到Firebase控制台的规则页面临时开放读权限测试,如果测试后字段能正常返回,再调整为符合业务要求的权限规则即可。
- 实体类映射校验:如果你用自定义实体类接收数据,要确保姓名、手机号对应的字段有public的getter方法,或者添加了
@PropertyName注解和数据库字段匹配,不要使用无getter的private字段,会导致反射读取失败返回null。 - 主线程赋值校验:Firebase的数据读取是异步回调,默认不在主线程执行,赋值到TextView的逻辑需要用
runOnUiThread包裹,否则会出现不展示的问题。
内容的提问来源于stack exchange,提问作者Alok Jain
相关产品推荐
相关产品推荐

