如何从Firestore中的特定字段获取数据(Android)

zqdjd7g9  于 2022-12-28  发布在  Android
关注(0)|答案(2)|浏览(154)

我正在寻找从firestore中的特定字段获取值。下面是我的firestore示例json

{
   "details":{
      "name":"rahul",
      "country":"India",
      "phone":"1234567890"
   },
   "course":{
      "subject":"cs",
      "duration":"6 months"
   }
}

我想从字段“详细信息”中获取数据。我尝试了下面的方法,但没有效果

override fun getStudentDetails() = callbackFlow {
    val snapshotListener =
        db.collection("studentDetails")
            .document(Constants.FirestoreCollections.STUDENT_DETAILS_ID)
            .collection(Constants.FirestoreCollections.Organisation.STUDENT_DETAILS)
            .addSnapshotListener { snapshot, e ->
                val taskResponse = if (snapshot != null) {
                    val tasks = snapshot.toObjects(Details::class.java)
                    Response.Success(tasks)
                } else {
                    Response.Failure(e)
                }
                trySend(taskResponse)
            }
    awaitClose {
        snapshotListener.remove()
    }
}

有没有办法做到这一点?

f45qwnt8

f45qwnt81#

您的snapshot对象是DocumentSnapshot,如果您想获取特定字段,可以调用get("details.name")(或任何其他相关路径)。

z9ju0rcb

z9ju0rcb2#

要获取所提供JSON数据中特定字段的值,可以使用点表示法访问该字段。例如,要获取“name”字段的值,可以使用以下代码:

jsonData.详细信息.名称

这将返回值“rahul”。类似地,您可以使用点符号访问JSON数据中的其他字段,如“country”或“duration”。
例如,要获取“duration”字段的值,可以使用以下代码:

jsonData.课程.持续时间

这将返回值“6个月”。
还可以使用方括号表示法来访问JSON数据中的字段。例如,下面的代码也将返回“name”字段的值:

jsonData [“详细信息”][“名称”]

请记住,JSON数据中的字段名区分大小写,因此在访问它们时请确保使用正确的大写。

相关问题