首页 > 解决方案 > 如何从firebase中检索键和值并将它们存储在两个单独的变量中

问题描述

我正在创建登录活动,它由两个编辑文本用户名和密码组成,我想从 firebase 数据库实时检查登录用户名和密码,我将其保存在对象名称“用户”中,如下所示

{
  "users" : {
    "admin" : "a",
    "table1" : "t1",
    "table2" : "t2",
    "table3" : "t3",
    "table4" : "t4",
    "table5" : "t5",
    "table6" : "t6",
    "table7" : "t7",
    "table8" : "t8",
    "table9" : "t9",
    "table10" : "t10",
    }
}

这段代码科特林

    private lateinit var database:FirebaseDatabase
    private lateinit var reference: DatabaseReference

    // initlize 
    database = FirebaseDatabase.getInstance()
    reference = database.getReference()

    inner class ReadData : ValueEventListener {
        override fun onCancelled(p0: DatabaseError) {
            Toast.makeText(applicationContext , p0.message.toString() ,Toast.LENGTH_LONG).show()
        }

        override fun onDataChange(p0: DataSnapshot) {

            for(data in p0.children){

               Log.i("LIST IN FIREBASE",data.toString())

            }
        }
    }
}

fun login(view: View) {
    var readData = ReadData()
    reference.addValueEventListener(readData)
}

我可以访问密钥('admin','table1',...等),但我无法访问值('a','t1',...等)如何检查这种结构的登录?

不关心语法 kotlin 或者 java 写语法代码随心所欲

标签: javaandroidandroid-studiokotlin

解决方案


首先进入子模式users,然后添加事件监听器。

reference.child("users").addValueEventListener(readData)

然后尝试解析keyvalue在里面onDataChange

for(data in p0.children) { 

    val key = data.key
    val value = data.getValue(String::class.java)

    Log.i("LIST IN FIREBASE",data.toString())
}

推荐阅读