Android Firebase实时数据库,在每次登录时添加新的时间戳子节点?

Android Firebase实时数据库,在每次登录时添加新的时间戳子节点?,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我对firebase非常陌生,因为这是我的第一个项目,所以非常感谢您的帮助,因为这个问题占用了我好几个小时的时间。我认为解决方案可能非常简单,但我没有看到 我想在每次登录应用程序时收集特定于用户的数据,因此实时数据库中的数据如下所示: -user-id{ -10:40:50:{ -location:"loation1", -activity:"walking", -b

我对firebase非常陌生,因为这是我的第一个项目,所以非常感谢您的帮助,因为这个问题占用了我好几个小时的时间。我认为解决方案可能非常简单,但我没有看到

我想在每次登录应用程序时收集特定于用户的数据,因此实时数据库中的数据如下所示:

-user-id{
        -10:40:50:{
                   -location:"loation1",
                   -activity:"walking",
                   -batteryLevel:"90%"
                    }
        -11:50:30:{
                   -location:"location2",
                   -activity:"running",
                   -battery-level:"80%"
                   }
    }
我试着从简单地让不同的节点成为每次登录的时间戳开始,然后再详细介绍这些时间戳的位置、活动和电池电量。 我认为下面的代码会创建如下内容:

-user-id{
        -10:40:50:"10:40:50"
        -11:50:30:"11:50:30"
        }
但我只得到了

-user-id{
         -11:50:30:"11:50:30"
        }
我的问题是,每次用户登录时,新的时间戳都会覆盖旧的时间戳,因此用户id始终只有一个子节点,即与最新登录关联的时间戳

这是我试过的代码。PS:我试过用.push.setValue替换.setValue,但最后一个时间戳总是会擦除前一个时间戳

FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference(firebaseAuth.getCurrentUser().getUid());
    myRef.setValue( firebaseAuth.getCurrentUser().getUid());
    String currentDateTime = DateFormat.getDateTimeInstance().format(new Date());
    DatabaseReference usersRef = myRef.child(currentDateTime );

    usersRef.setValue(currentDateTime);
上面的代码我已经把它放在activity ProfileActivity.java的Oncreate中,这基本上就是用户在正确身份验证后被重定向到的活动。
谢谢你的帮助。

这是一个非常愚蠢的错误

DatabaseReference myRef = database.getReference(firebaseAuth.getCurrentUser().getUid());
myRef.setValue( firebaseAuth.getCurrentUser().getUid());
这两行代码总是完全清除节点并将值设置为Uid

如果节点以前看起来像这样

user123
    - name:"peter"
    - 10:40:50:"10:40:50"
现在看起来是这样的

user123:"user123"

将节点的完整内容设置为Uid。如果您只是删除myRef.setValue。。。声明,您的问题将得到解决。

非常感谢。这确实很愚蠢。我一直在关注这个孩子,认为问题出在第二个setValue usersRef.setValuecurrentDateTime上,甚至没有检查第一个我实际设置父节点内容的地方。非常感谢,您为我节省了大量时间。