Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firestore布尔值设置为true时返回false_Android_Firebase_Kotlin_Google Cloud Firestore - Fatal编程技术网

Android Firestore布尔值设置为true时返回false

Android Firestore布尔值设置为true时返回false,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,我有一个非常奇怪的问题,我已经运行了调试器并逐步通过代码查看Firestore中的每个元素 我的firestore数据库中有一个产品列表 结构 shop -> shopId -> products -> productList 我有一个如下的数据类 @Parcelize data class Producto( val imagenProducto: String = "", val nombreProducto: String = "", val d

我有一个非常奇怪的问题,我已经运行了调试器并逐步通过代码查看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)
    }
在这里,我有一个子集合,其中有一家商店的最终产品

问题 所以,这里是它发生的情况,在我获取所有这些文档之后,列表出现在我的视图中,其中包含列表中每个元素的数据,但是产品的一个值不被尊重

我在一个文档中有place isCombo=true,但在我的应用程序中,它将该值设置为false,但另一个布尔值hasDescuento具有正确的值

我试过的 清理和重建 使缓存无效/重新启动 逐步使用调试器查看每个元素,看看我是否 用输入错误插入我的变量 检查我对数据的引用 这是输出,这是我如何将数据存储在我的引用中的

这里isCombo设置为true

现在,这就是我在检索此文档时看到的结果

因此,这里isCombo为false,但是我的另一个布尔hasdescounto从数据库中为另一个不同的产品提供了正确的值,我怀疑我的数据类中有Parcelize注释,但是所有其他不是isCombo的数据都是正常获取的


会发生什么情况?

似乎在Firestore中,Combo之前的属性在Firestore中以不同的方式映射,并且映射为just Combo而不是isCombo,因此,将属性的名称更改为hasCombo,清理并重建了该项目,该项目成功了

多亏了亚历克斯

并将在文档中填写布尔数据类型注释的建议


似乎在Firestore中,Combo之前的属性映射方式有所不同,并且映射为just Combo而不是isCombo,因此,将属性的名称更改为hasCombo,清理并重建了该项目,结果成功了

多亏了亚历克斯

并将在文档中填写布尔数据类型注释的建议

在创建帮助程序类时,切勿尝试使用isDone、isCombo、isDeclared等字段,即字段不得以is作为前缀,否则将导致Firebase映射与Getter和Setter方法冲突

此行可能出现错误:

// Here bannerSnapshot is a QueryDocumentSnapshot object
CreateOfferObject product = bannerSnapshot.toObject(CreateOfferObject.class);
[注意:此错误通常发生在布尔字段中。]

我也有同样的问题,只是通过更改字段名、重置getter和setter来修复它

希望!这很有帮助。

永远不要尝试使用isDone、isCombo、isDeclared等字段,即在创建帮助程序类时,字段不能以is作为前缀,否则会导致Firebase映射与Getter和Setter方法冲突

此行可能出现错误:

// Here bannerSnapshot is a QueryDocumentSnapshot object
CreateOfferObject product = bannerSnapshot.toObject(CreateOfferObject.class);
[注意:此错误通常发生在布尔字段中。]

我也有同样的问题,只是通过更改字段名、重置getter和setter来修复它


希望!这很有帮助。

我也有同样的问题,我发现了这个问题


我也有同样的问题,我发现了这个

我怀疑isCombo被解释为名为combo的布尔属性的getter。请始终记住,Firebase/Firestore遵循JavaBean模式进行属性命名,这就是其中之一。我怀疑isCombo被解释为名为combo的布尔属性的getter。请始终记住,Firebase/Firestore遵循JavaBean模式进行属性命名,这就是其中之一。