如何从Firestore中的对象_field获取数据

时间:2018-10-11 17:13:55

标签: android firebase kotlin google-cloud-firestore

我需要从Firestore中的文档中的对象(名为“ 0”)获取数据,这可能吗?enter image description here 这是我的代码:

val db = FirebaseFirestore.getInstance()
    val docRef = db.collection("accessories")
            .document("brand0")
    docRef.get().addOnCompleteListener(OnCompleteListener<DocumentSnapshot> { task ->
        if (task.isSuccessful) {
            val document = task.result
            val group = document.get("0") as ArrayList<String>
        }

但是将Any强制转换为Arraylist是不可能的,采用任何其他方式来获取这些数据? enter image description here

2 个答案:

答案 0 :(得分:1)

看起来0是一个对象类型字段。这意味着它将在本地表示为Map类型的对象,并使用字符串作为其包含的属性的键。

答案 1 :(得分:0)

经过反复试验,这最终对我有用,但是我不确定为什么。我在当前项目中正在使用kotlin。

fun getOwner(userId: String) {

    val db = Firebase.firestore

    val docRef = db.collection("users").document(userId)
    docRef.get()
        .addOnSuccessListener { document ->
            if (document != null) {
                Log.d(TAG, "DocumentSnapshot data: ${document.data}")

                val data = document.data as Map<String, String>

                showOwnerName.text = data["name"]
            } else {
                Log.d(TAG, "No such document")
            }
        }
        .addOnFailureListener { exception ->
            Log.d(TAG, "get failed with ", exception)
        }

}

我正在将获取的数据转换为地图,这就是我能够访问其值的方式。