无法使用 Firebase Firestore 数据库找到 id - Android kotlin

问题描述 投票:0回答:1

我的代码遇到问题,或者从我的 firebase firestore 数据库获取数据时遇到问题。这里奇怪的是除了 id 之外的所有其他字段都是可读的。我已经阅读了 logcat 并且我得到了一个 null id 或者更确切地说它没有得到任何 id。

这是我的适配器代码:

holder.cardView.setOnClickListener {
    val intent = Intent(context, UpdateTenantActivity::class.java).apply {
        putExtra("room_number", tenant.id)
        Log.d("TenantAdapter", "Room ID being passed: ${tenant.id}")
    }
   context.startActivity(intent)
      // onUpdateTenant(tenant.room_number)
}

这是我的数据类的代码

data class Tenant(
    val id: String = "",
    val room_number: String = "",
    val kost_name: String = "",
    val first_name: String = "",
    val phone_number: String = "",
    val floor_number: String = "",
    val room_ac: String = "",
    val water_heater: String = "",
    val room_clean: String = "",
    val room_vacancy: String = "",
    val ampere_number: String = "",
    val room_note: String = ""        
)

Here is my firestore database

android firebase kotlin google-cloud-firestore
1个回答
0
投票

如果要将 Firestore 文档映射到

Tenant
类型的对象,则该类中的所有字段都应该在数据库中具有相应的值。例如,如果您的类中有一个名为
ampere_number
的字段,那么在您的文档中,您应该具有包含值的完全相同的字段。在此示例中,存在匹配项,
ampere_number
存在并且包含值“4”。

这里奇怪的是,除了 ID 之外的所有其他字段都是可读的。我已经阅读了 logcat,并且得到了一个空 ID,或者更确切地说,它没有得到任何 ID。

这是预期的行为,因为在您的文档内有 no 名为

id
的字段。因此,Firestore SDK 无法将不存在的字段映射到
id
字段,因此值为
null

所以有一些方法可以解决这个问题:

  1. 将数据写入 Firestore 时,您首先生成 ID,然后填充

    id
    字段,然后再将数据写入 Firestore。

  2. 当您从 Firesrore 读取数据时,即使您没有文档 ID 作为字段,您也可以调用 DocumentSnapshot#getId() 并使用文档 ID 填充

    id
    字段。

© www.soinside.com 2019 - 2024. All rights reserved.