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

如何使用Kotlin从Firebase中获取所有movie_id数据

正确获取Firebase中所有movie_id的方法

你的代码没必要把DataSnapshot转成Map再手动遍历键,Firebase提供了更直接的子节点遍历方式。因为你用push()生成的每个节点都是独立子项,每个子项里包含movie_id字段,直接遍历snapshot的children即可:

firebaseDb.getReference("Users").child(uid).child("movie").addValueEventListener(object : ValueEventListener {
    override fun onDataChange(snapshot: DataSnapshot) {
        val movieIds = mutableListOf<Any>() // 根据你的movie.id实际类型调整,比如String或Long
        for (childSnapshot in snapshot.children) {
            // 从每个push生成的子节点中取出movie_id
            val movieId = childSnapshot.child("movie_id").value
            movieId?.let { movieIds.add(it) }
        }
        // 这里用movieIds列表更新界面展示即可
    }

    override fun onCancelled(error: DatabaseError) {
        // 处理数据库访问错误,避免崩溃
        error.toException().printStackTrace()
    }
})

关键说明:

  • snapshot.children包含所有push()生成的子节点,每个节点对应一条保存的电影ID记录
  • 调用child("movie_id")直接定位到目标字段,value就是你保存的电影ID值
  • 根据args.movie.id的实际类型,把mutableListOf<Any>()改成对应类型(比如mutableListOf<String>()),减少后续类型转换问题
  • 必须实现onCancelled方法,处理数据库访问失败的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:33:28