如何根据 Kotlin 中的键值从 firebase 读取数据

Posted

技术标签:

【中文标题】如何根据 Kotlin 中的键值从 firebase 读取数据【英文标题】:How to read data from firebase based on a key value in Kotlin 【发布时间】:2019-09-26 21:27:50 【问题描述】:

我想使用 Kotlin 和 android studio 从 firebase 检索数据。 这是我的数据类,用于将数据上传到 firebase:

class Data(var id : String,
           var productname : String , 
           var username : String,
           var phonenumber : String,
           var address: String,
           var status: String)

为了向 firebase 添加数据,我使用了以下格式:

val ref = FirebaseDatabase.getInstance().getReference("orders")

val orderId :String = ref.push().key.toString()

val formdata = Data(orderId,
                    productname, 
                    username, 
                    phonenumber, 
                    useraddress, 
                    status)

ref.child(orderId).setValue(formdata).addOnCompleteListener 
            Toast.makeText(applicationContext,"Order placed sucessfully", Toast.LENGTH_SHORT).show()
        

现在我想从 firebase 中检索电话号码值与给定字符串匹配的数据。

【问题讨论】:

实际上我建议使用 phone_number 进行索引,这样您就不需要 phone_number 匹配。您的应用中的电话号码是唯一的吗? 没有 Kayra,电话号码不是唯一的 【参考方案1】:

现在我想从 firebase 中检索电话号码值与给定字符串匹配的数据。

要解决这个问题,您需要使用查询,例如以下代码行:

val rootRef = FirebaseDatabase.getInstance().reference
val ordersRef = rootRef.child("orders").orderByChild("phonenumber").equalTo(givenString)
val valueEventListener = object : ValueEventListener 
    override fun onDataChange(dataSnapshot: DataSnapshot) 
        for (ds in dataSnapshot.children) 
            val username = ds.child("username").getValue(String::class.java)
            Log.d(TAG, username)
        
    

    override fun onCancelled(databaseError: DatabaseError) 
        Log.d(TAG, databaseError.getMessage()) //Don't ignore errors!
    

ordersRef.addListenerForSingleValueEvent(valueEventListener)

您的 logcat 中的结果将是电话号码等于给定字符串的订单中存在的用户名。

【讨论】:

以上是关于如何根据 Kotlin 中的键值从 firebase 读取数据的主要内容,如果未能解决你的问题,请参考以下文章

根据字典中的键值检查列表中的值,Python

根据特定值从数组中选择项目

如何使用kotlin在Android的firebase中获取child的键值

PHP如何根据数组中的键值进行排序

如何根据字典中的键值逐行向熊猫数据框添加值?

如何在 for 循环中使用动态键值从 JSON 数组获取值?科特林