【问题标题】:how to get data from object _field in firestore如何从firestore中的对象_field获取数据
【发布时间】:2018-10-11 17:13:55
【问题描述】:

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

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 是不可能的,还有其他方法可以获取这些数据吗?

【问题讨论】:

  • 这个问题你解决了吗?你做了什么?
  • 大声笑,这个问题是三年前我还是编程新手的时候。我真的不记得我是如何解决它的,但我认为铸造解决了它。 val group=document. get("0") as Map&lt;String, String&gt; ;

标签: android firebase kotlin google-cloud-firestore


【解决方案1】:

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

【讨论】:

  • map like this: hashmap(key:String, Value :Any) 是的,我是这样理解的,但是这里的 Key 是“0”,而 Value 是“0”的内容,所以值类型是Any,我不能使用它。我需要“0”的内容作为列表或数组。
  • 我不太明白。鉴于您文档中的数据,您能否编辑您的问题以说明您的最终结果应该是什么?
  • 我添加了新照片,请看@Doug Stevenson
  • 我仍然不明白使用返回的 Map 获取所有属性和值有什么问题。
  • 怎么做?我还是不知道该怎么做
【解决方案2】:

经过一些试验和错误,这最终对我有用,但我不知道为什么。我在当前项目中使用 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)
        }

}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2020-01-25
    • 2023-04-02
    相关资源
    最近更新 更多