我的代码遇到问题,或者从我的 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 = ""
)
如果要将 Firestore 文档映射到
Tenant
类型的对象,则该类中的所有字段都应该在数据库中具有相应的值。例如,如果您的类中有一个名为 ampere_number
的字段,那么在您的文档中,您应该具有包含值的完全相同的字段。在此示例中,存在匹配项,ampere_number
存在并且包含值“4”。
这里奇怪的是,除了 ID 之外的所有其他字段都是可读的。我已经阅读了 logcat,并且得到了一个空 ID,或者更确切地说,它没有得到任何 ID。
这是预期的行为,因为在您的文档内有 no 名为
id
的字段。因此,Firestore SDK 无法将不存在的字段映射到 id
字段,因此值为 null
。
所以有一些方法可以解决这个问题:
将数据写入 Firestore 时,您首先生成 ID,然后填充
id
字段,然后再将数据写入 Firestore。
当您从 Firesrore 读取数据时,即使您没有文档 ID 作为字段,您也可以调用 DocumentSnapshot#getId() 并使用文档 ID 填充
id
字段。