You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库用户分群展示与登录逻辑问题排查

专家页面用户列表消失问题排查

问题背景

需求明确:专家用户登录后,页面应展示普通用户列表;但在判断条件中加入&& currentUser!!.isExpert后,列表完全隐藏。

核心问题分析

你写的判断逻辑搞反了:

if(auth.currentUser?.uid != currentUser?.uid && currentUser!!.isExpert){
    expertList.add(currentUser!!)
}

这个条件是在筛选「不是当前登录用户的专家用户」,但专家页面需要的是「不是当前登录用户的普通用户」,也就是currentUser.isExpert == false。

另外,currentUser!!存在空指针风险——如果数据库里的用户数据解析失败,currentUser会是null,直接用!!会导致崩溃,建议补上空安全判断。

修正后的代码

把判断条件改成筛选普通用户,同时增加空安全处理:

for(postSnapshot in snapshot.children){
    val currentUser = postSnapshot.getValue(User::class.java)
    // 先判断currentUser不为null,再筛选:不是当前用户 + 是普通用户
    if(currentUser != null && auth.currentUser?.uid != currentUser.uid && !currentUser.isExpert){
        expertList.add(currentUser)
    }
}

额外建议

  1. 数据库中手动创建专家账号时,确保isExpert字段是布尔值true,而非字符串或其他类型,否则Gson解析会使用默认值false。
  2. 可以在数据库层面做查询优化,直接过滤普通用户,减少客户端遍历:
dbRef.child("user").orderByChild("isExpert").equalTo(false).addValueEventListener(...)

这样就不用在客户端逐个判断isExpert,效率更高。

内容的提问来源于stack exchange,提问作者Kushal Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:40:15