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

如何在Firebase中获取子节点user ID匹配当前用户的上层节点ID?

实现方案

要获取匹配到的子节点对应的上层节点ID,直接调用遍历过程中DataSnapshot实例的key属性即可,该属性返回的就是当前节点的节点名称,也就是你需要的上层节点ID。

修改后的代码

fun loadOwnOffer() {
    val currentUid = firebaseAuth.currentUser?.uid ?: return // 提前判空,避免后续重复空判断
    databaseReference.addValueEventListener(object : ValueEventListener {
        override fun onDataChange(snapshot: DataSnapshot) {
            for (data in snapshot.children) {
                val model = data.getValue(OffersModelClass::class.java)
                val userID: String = model?.userID.toString()
                if (userID == currentUid) {
                    // 此处获取上层节点ID
                    val parentNodeId = data.key
                    Log.d("获取到的上层节点ID", parentNodeId ?: "节点ID为空")
                    Log.d("匹配到的用户ID", userID)
                }
            }
        }

        override fun onCancelled(error: DatabaseError) {
            // 异常处理逻辑,方便排查问题
            Log.w("loadOwnOffer", "加载数据失败", error.toException())
        }
    })
}

补充说明

  • 提前对当前登录用户的UID做判空处理,如果用户未登录直接跳出方法,避免后续无效的逻辑执行
  • 新增了onCancelled的异常处理逻辑,避免运行时崩溃,也方便排查数据库请求失败的问题
  • 如果你只需要单次拉取数据而不需要实时监听数据变化,可以把addValueEventListener替换为addListenerForSingleValueEvent,减少不必要的性能消耗

数据库结构示意图

内容的提问来源于stack exchange,提问作者Mohammad Mawed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:06