Firebase addListenerForSingleValueEvent()更改不同数据库节点

时间:2016-06-17 19:41:43

标签: android firebase firebase-realtime-database

我使用Android应用程序获得了firebaseAuth和FirebaseDatabse。在卸载并重新安装应用程序后,我发现FirebaseAuth.getInstance()。getCurrentUser()返回先前登录的用户的一些问题。我发布了此问题here

但是我也注意到调用FirebaseDatabse addListenerForSingleValueEvent()回调监听器会更改我数据库中的一些数据,而这只会在我再次卸载并重新安装应用程序时发生。下面显示的是我用来从FirebaseDB获取当前用户的代码。

final FirebaseAuth auth = FirebaseAuth.getInstance();
        if (auth.getCurrentUser() != null) {
            // already signed in
            mDatabase.getReference("users").child(auth.getCurrentUser().getUid()).addListenerForSingleValueEvent(
                    new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                           // I commented the code here to check whether its coming from this part but it continued to occur even after commenting.
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                            Log.w(TAG, "getUser:onCancelled", databaseError.toException());
                        }
                    });
        }

正如您所看到的,我使用用户ID作为密钥访问数据库中名为users的节点,并且我成功获取了用户数据。然而,还有另一个名为" posts"在我的数据库中,我使用相同的用户ID作为密钥。但是用户和帖子是数据库中的两个不同节点。

所以当调用上面的addListenerForSingleValueEvent()时,发布节点中相应用户ID下的一些数据会发生变化。在几秒钟的回调之后,我可以看到一些新的数据已从用户发布的红色中删除,一些已经更改为黄色。 当我评论整个回调时,没有任何改变或删除帖子。

我提到过这种情况只有在我卸载并重新安装时才会发生。我尝试清除缓存而不卸载它没关系,我也尝试清除数据,它仍然没问题。

我还应该提到我正在使用mDatabase.setPersistenceEnabled(true);此问题仅在此设置为true时发生。我尝试评论这一行,一切正常。

任何人都可以帮助我,因为我在这个阶段迷路了。

0 个答案:

没有答案
相关问题