从Firebase数据库获取具有相同数据类的数据的不一致性

时间:2018-01-02 07:43:51

标签: android firebase firebase-realtime-database kotlin

在我的Firebase实时数据库中,我有两个用于调试和发布版本的主要分支。 debug分支工作正常,但是当获取release分支时,price字段在转换为下面的map或list之后总是具有零值,而其他三个字段反映来自DB的正确值。请注意,在DB上使用整数或小数字段没有区别。这就是我的数据:

Database preview

这是我的问题数据类

data class JsonProducto(var id: String,
                    var name: String,
                    var description: String,
                    var price: Double) : Parcelable {
    constructor() : this(
            "id",
            "name",
            "desc",
            0.0
    )

    constructor(source: Parcel) : this(
            source.readString(),
            source.readString(),
            source.readString(),
            source.readDouble()
     )

     override fun describeContents() = 0

     override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
        writeString(id)
        writeString(name)
        writeString(description)
        writeDouble(price)
    }

    companion object {
        @JvmField
        val CREATOR: Parcelable.Creator<JsonProducto> = object : Parcelable.Creator<JsonProducto> {
            override fun createFromParcel(source: Parcel): JsonProducto = JsonProducto(source)
            override fun newArray(size: Int): Array<JsonProducto?> = arrayOfNulls(size)
        }
    }
}

我还尝试了两种方法将数据快照转换为我的类,两者都有相同的结果:

序列化方式编号1

val mapper = object : GenericTypeIndicator<HashMap<String, JsonProducto>>() {}
val list = arrayListOf<JsonProducto>()
val map = dataSnapshot.getValue(mapper)

map?.forEach {
      list.add(it.value)
}

序列化方式编号2

val list: MutableList<JsonProducto> = mutableListOf() 

dataSnapshot.children.mapNotNullTo(list) { 
     it.getValue<JsonProducto>(JsonProducto::class.java) 
}

为什么会出现这种行为?我很感激你的时间。

编辑:

仍在尝试弄清楚这里发生了什么,我做了一些实验,但结果仍让我感到震惊:我只在工作分支的一个产品中将DB字段的名称更改为precio,并且将数据类成员重命名为该成员,现在除了重命名的字段外,所有字段都显示为零。但是,无论如何,非工作分支仍显示零。这很奇怪。

0 个答案:

没有答案