仅将UID插入Firebase数据库一次

时间:2017-12-11 15:42:36

标签: java android firebase firebase-realtime-database

在Android Studio的主要活动中,在匿名登录firebase之后,我有这行代码:

        FirebaseDatabase.getInstance().getReference().child("Online Users").push().setValue(currentUser.getUid().toString());

因此,当前用户的UID将被保存到子网" Online Users"下的firebase中。好。问题是,当我第二次或第三次打开应用程序时,或者如果我从另一个活动导航到主活动时,这行代码再次执行,现在我在firebase中有几个相同的条目。我的意思是,一个UID已被多次推入firebase。但我不想要那个。我只想要每个UID的一个副本。我怎样才能做到这一点?

1 个答案:

答案 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