【发布时间】:2020-06-23 23:59:29
【问题描述】:
我有一个非常奇怪的问题,我已经运行了调试器并单步执行代码以查看 Firestore 中的每个元素
我的 Firestore 数据库中有一个产品列表
结构
shop -> shopId -> products -> productList
我有一个如下的数据类
@Parcelize
data class Producto(
val imagenProducto: String = "",
val nombreProducto: String = "",
val descProducto: String = "",
val precio: Int = 0,
val hasDescuento: Boolean = false,
val tipoDescuento: Double = 0.0,
val isCombo: Boolean = false
) : Parcelable
现在,我用来按isCombo 过滤的代码创建两个列表,其中一个将包含所有产品(如果需要折扣)和组合(如果isCombo 布尔值设置为true)
现在,这很奇怪,因为我的代码会获取所有这些文档并将其发送到我的视图
suspend fun getProductosList(comercioId:String):Resource<MutableList<Producto>>{
val productList = mutableListOf<Producto>()
val snapshot = FirebaseFirestore.getInstance().collection("comercios").document(comercioId).collection("products").get().await()
for(producto in snapshot){
productList.add(producto.toObject(Producto::class.java))
}
return Resource.Success(productList)
}
这里我有一个子集合,其中包含商店(comercio)的最终产品。
问题
所以,事情是这样的,在我获取所有这些文档之后,列表出现在我的视图中,其中包含列表中每个元素的数据,但是产品的一个值没有按预期出现。
我在一个文档 isCombo = true 中有位置,但是当这涉及到我的应用程序时,它将此值设置为 false,但另一个布尔值 hasDescuento 带有正确的值
我尝试过的
- 清理并重建
- 使缓存无效/重启
- 使用调试器逐步查看每个元素,看看我是不是 用错字插入我的变量
- 检查我对数据的引用
这是输出,这就是我将数据存储在我的参考文献中的方式
这里 isCombo 设置为 true
现在,这就是我在检索此文档时看到的结果
所以,这里isCombo 为假,但我的另一个布尔值 hasDescuento 带有来自数据库的正确值(对于另一个不同的产品),我怀疑我的数据类中的 Parcelize 注释,但所有其他数据那不是 isCombo 是正常获取的
会发生什么?
【问题讨论】:
标签: android firebase kotlin google-cloud-firestore