在Android Studio的主要活动中,在匿名登录firebase之后,我有这行代码:
FirebaseDatabase.getInstance().getReference().child("Online Users").push().setValue(currentUser.getUid().toString());
因此,当前用户的UID将被保存到子网" Online Users"下的firebase中。好。问题是,当我第二次或第三次打开应用程序时,或者如果我从另一个活动导航到主活动时,这行代码再次执行,现在我在firebase中有几个相同的条目。我的意思是,一个UID已被多次推入firebase。但我不想要那个。我只想要每个UID的一个副本。我怎样才能做到这一点?
答案 0 :(得分:0)
每当您希望特定值在Firebase数据库中唯一时,请将其建模为列表的键。
在您的情况下,这意味着您实际上不使用UID作为密钥来调用push()
:
FirebaseDatabase.getInstance().getReference().child("Online Users").child(currentUser.getUid().toString()).setValue(true);
现在,只要用户再次上线,他们就会再次将true
写入同一位置。
请注意,同一个用户可以从多个设备联机。如果您正在尝试构建在线系统,跟踪用户在线的情况,我建议您研究正确处理边缘情况的sample presence system in the Firebase documentation。