来自 firebase 实时数据库的重复数据

Posted

技术标签:

【中文标题】来自 firebase 实时数据库的重复数据【英文标题】:Duplicate data from firebase realtime databse 【发布时间】:2019-12-26 19:05:37 【问题描述】:

有一种方法可以将来自 firebase 实时数据库的数据添加到我的列表中:

private fun getTargetsFromDb() 
        val uid = firebaseUser!!.uid
        val targetsRef = databaseReference?.child("targets")?.child("users")?.child(uid)?.child("targets")
        val valueEventListener = object : ValueEventListener 
            override fun onDataChange(dataSnapshot: DataSnapshot) 
                for (targetSnapshot in dataSnapshot.children) 
                    val target = targetSnapshot.getValue(Target::class.java)
                    target?.let  targetList.add(it) 
                
                recyclerView?.adapter = adapter
            

            override fun onCancelled(databaseError: DatabaseError) 
                Log.d("some", "Error trying to get targets for $databaseError.message")
            
        
        targetsRef?.addListenerForSingleValueEvent(valueEventListener)
    

但有时当我从一个片段跳转到另一个片段时,我有一个重复的数据列表。

问:我需要在某处将remove 的数据用于targetList

【问题讨论】:

您可以在添加数据之前清除列表。 【参考方案1】:

这可以帮助您清除旧数据并将新数据存储在列表中。

private fun getTargetsFromDb() 
        val uid = firebaseUser!!.uid
        val targetsRef = databaseReference?.child("targets")?.child("users")?.child(uid)?.child("targets")
        val valueEventListener = object : ValueEventListener 
            override fun onDataChange(dataSnapshot: DataSnapshot) 
                targetList.clear()
                for (targetSnapshot in dataSnapshot.children) 
                    val target = targetSnapshot.getValue(Target::class.java)
                    target?.let  targetList.add(it) 
                
                recyclerView?.adapter = adapter
            

            override fun onCancelled(databaseError: DatabaseError) 
                Log.d("some", "Error trying to get targets for $databaseError.message")
            
        
        targetsRef?.addListenerForSingleValueEvent(valueEventListener)
    

上面的代码会检查响应是否成功,然后它会清除列表并存储值,否则它不会清除列表并给你异常。

【讨论】:

以上是关于来自 firebase 实时数据库的重复数据的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库数据同步策略

如何根据来自firebase的时间戳获取排序数据[重复]

基于Storm与Cassandra的实时计算与大数据实践

一文读懂大数据实时计算

如何从父级及其子级的 Firebase 中获取随机数据 [重复]

在 Angular 服务中 HTTP.get 之后从 firebase 返回的重复数组