Firebase数据库实时性忽略了一些值

时间:2018-11-14 21:01:00

标签: android firebase firebase-realtime-database kotlin

我有一个android应用程序和firebase实时数据库。 我有一个名为Game的类,它具有以下描述的属性。 最近,我决定添加一个名为likes的新属性,但是当我读取快照时,除了新字段likes

之外,所有其他字段均被读取

为什么会这样?

enter image description here

data class Game (
    val id: String? = null,
    val title: String? = null,
    val release_date: String? = null,
    val gender: String? = null,
    val image: String? = null,
    val description: String? = null,
    val rating: Long? = null,
    var likes: Long? = null,
    var liked: Boolean? = null,
    val video: String? = null,
    val plataformas: String? = null
)

private val gamesVEL : ValueEventListener by lazy {
    object : ValueEventListener{
        override fun onCancelled(databaseError: DatabaseError) {}

        override fun onDataChange(dataSnapshot: DataSnapshot) {
            Log.d("firebase","jejejejje")
            juegos.clear()
            dataSnapshot.children.forEach {
                val game = it.getValue(Game::class.java)
                juegos.add(game!!)
            }
            queryStars.addListenerForSingleValueEvent(starsVEL)

        }

    }
}

更新

在新设备中安装可以解决问题,但在较旧的设备中不能解决。我的意思是,如果我仍然错过了字段likes之前安装的应用程序。

1 个答案:

答案 0 :(得分:1)

  

我读取了快照,除了喜欢的新字段之外,所有字段均被读取

在具有较旧版本应用程序的设备上使用该应用程序时,这是唯一

  

为什么会这样?

之所以发生这种情况,是因为您的应用程序的早期版本未包含您的Game类的更新版本,该类包含新添加的likes字段。换句话说,旧版本只能读取和写入可识别的属性。

要解决此问题,您应该将旧版本更新为新版本,以便可以看到新添加的属性。