繁体   English   中英

如何使用 Kotlin 从 Firebase 获取特定数据

[英]How to get specific data from Firebase with Kotlin

所以我有一个电影应用程序。 如果我喜欢这部电影,我会将其 id 保存到 firebase。 我的目标是获取所有movie_id 并将它们显示在屏幕上。

这是保存代码。

firebaseDb.getReference("Users").child(uid).child("movie")
            .push().child("movie_id")
            .setValue(args.movie.id)

这是firebase显示器

火力基地

那么如何获取所有movie_id呢? 我试过了,但什么也没发生。

firebaseDb.getReference("Users").child(uid).child("movie").addValueEventListener(object :
ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
    val map: Map<String, Any> = snapshot.getValue() as Map<String, Any>

    val mapSize = map.keys.size
    for (i in 1..mapSize) {
        val keys = map.filterKeys { it == map.keys.toTypedArray()[i - 1] }       
    }

}

如果要创建电影 ID 列表,请使用以下代码行:

val uid = FirebaseAuth.getInstance().currentUser?.uid
val db = FirebaseDatabase.getInstance().reference
val movieRef = db.child("Users").child(uid).child("movie")
val valueEventListener = object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        val movieIds = mutableListOf<String>()
        for (ds in dataSnapshot.children) {
            val movieId = ds.child("movie_id").getValue(String::class.java)
            movieIds.add(movieId)
        }
        Log.d("TAG", movieIds.size.toString())
    }

    override fun onCancelled(error: DatabaseError) {
        Log.d("TAG", error.getMessage()) //Never ignore potential errors!
    }
}
movieRef.addListenerForSingleValueEvent(valueEventListener)

logcat 中的结果将是:

2

因为我在屏幕截图中只看到两部电影。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM