首页 > 解决方案 > FirebaseDatabase onChildChanged 返回多个快照

问题描述

我有一个问题,我没有得到最近添加的孩子。

这是我的数据库:

这是我的测试代码:

val db = FirebaseDatabase.getInstance().reference
        val newref = db.child("/Orders/ODbPagPuDFgGhj0l73lynD4Wdkr2/")


        newref.addChildEventListener(object: ChildEventListener {
            override fun onChildChanged(snap: DataSnapshot, p1: String?) {
                Log.d("ac1234","${snap}")
            }


            override fun onCancelled(p0: DatabaseError) {           }

            override fun onChildMoved(p0: DataSnapshot, p1: String?) {            }


            override fun onChildAdded(p0: DataSnapshot, p1: String?) {  }

            override fun onChildRemoved(p0: DataSnapshot) {  }

        })

这是logcat:

2019-11-19 06:02:24.596 14991-14991/com.example.fru_vegetablesadmin D/ac1234: DataSnapshot { key = -Lu2y9uay-7G3gtFI4g3, value = {locationLat=33.95212290629996, locationLong=35.62042236328125, phoneNumber=+19823737, totalPrice=8,197 L.L., optionalAddress=, optionalNote=, time=19/10/2019 16:2 , order={Fresh Cucumber={totalQuantity=3 Kg, totalPrice=7497}}} }
2019-11-19 06:02:24.603 14991-14991/com.example.fru_vegetablesadmin D/ac1234: DataSnapshot { key = -Lu2y9uay-7G3gtFI4g3, value = {locationLat=33.95212290629996, locationLong=35.62042236328125, phoneNumber=+19823737, totalPrice=8,197 L.L., optionalAddress=, optionalNote=, time=19/10/2019 16:2 , order={Fresh Cucumber={totalQuantity=3 Kg, totalPrice=7497}}} }
2019-11-19 06:02:24.645 14991-14991/com.example.fru_vegetablesadmin D/ac1234: DataSnapshot { key = -Lu2y9uay-7G3gtFI4g3, value = {locationLat=33.95212290629996, locationLong=35.62042236328125, phoneNumber=+19823737, totalPrice=8,197 L.L., optionalAddress=, optionalNote=, time=19/10/2019 16:2 , order={Fresh Cucumber={totalQuantity=3 Kg, totalPrice=7497}, Fresh Eggplant={totalQuantity=200 G, totalPrice=700}}} }

我不知道为什么它返回 3 行数据,我只想听是否在 uid 下添加了一个孩子(“ODbPagPuD ...”)

提前致谢

标签: javaandroidfirebasefirebase-realtime-database

解决方案


改变这个:

        newref.addChildEventListener(object: ChildEventListener {
            override fun onChildChanged(snap: DataSnapshot, p1: String?) {
                Log.d("ac1234","${snap}")
            }


            override fun onCancelled(p0: DatabaseError) {           }

            override fun onChildMoved(p0: DataSnapshot, p1: String?) {            }


            override fun onChildAdded(p0: DataSnapshot, p1: String?) {  }

            override fun onChildRemoved(p0: DataSnapshot) {  }

        })

进入这个:

newref.addValueEventListener(object: ValueEventListener {
 override fun onDataChange(dataSnapshot: DataSnapshot) {
        Log.d("ac1234","${dataSnapshot}")

    }

    override fun onCancelled(databaseError: DatabaseError) {
        Log.w(TAG, "loadPost:onCancelled", databaseError.toException())

    }
}

推荐阅读