java - Firebase 检查用户名是否存在

标签 java android firebase firebase-realtime-database

我目前正在开发一个 Android 应用程序,只需要用户在按开始后注册一次。下次用户打开应用程序时,按开始会将用户重定向到主游戏。

我可以使用 SharedPreferences 来做到这一点。注册后,我存储一个名为 currentState 的值,并用它来检查用户是否已经注册。代码如下:

   final int currentState = sharedPreferences.getInt(USERSTATE_NUM_KEY,0);
   if(currentState == 0 ) {
          Intent i = new Intent(MainActivity.this, Main_Screen.class);
          startActivity(i);
    } else{
               // Redirect user to tutorial page, then the map page.
    }

现在我被要求使用 Firebase 再次完成此任务,因为我已经存储了用户数据。

到目前为止,这是我的代码,只是为了尝试它是否会进入 onDataChange,但它不会,我现在不知道该怎么做。到目前为止,这是我的代码:

final String currentUsername = sharedPreferences.getString(USERNAME_NUM_KEY, "");
final DatabaseReference userNameRef = rootReference.child("users");
startGame.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            userNameRef.orderByChild("username").equalTo(currentUsername)
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            if(dataSnapshot.exists()){
                                Log.v("TESTERR", "HELLO I EXIST LOL");
                            }
                            else{
                                Log.v("TESTERR", "NEW USER PAGE");
                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
 }
 });

firebase databasee

谢谢!!!

最佳答案

这个:

userNameRef.orderByChild("username").equalTo(currentUsername)

是一个查询,就像说where username= currentUsername

currentUsername 是登录用户,数据快照是users

所以在你的数据库中你有:

users
 userid
   username: currentUsername

当您使用 if(dataSnapshot.exists()){ 时,它会检查 users 快照并检查 where 条件,如果如果它们存在于数据库中,则将进入 if 子句。

如果where条件在数据库中不存在,则会进入else

关于java - Firebase 检查用户名是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49629501/

相关文章:

java - 如何在 IBM Cloud Functions 中检查 POST 正文?

java - 是否有任何java类可以从cron表达式中获取日期

Android 应用程序在版本中无法运行2.3

android - 尝试使用 Google 电子钱包验证 Android 应用内购买

android - 如何在不使用数据库的情况下保存我的应用程序的配置??? (使用简单的文本文件)

java - 将 dialogflow 依赖项添加到我的 android 应用程序后出现重复类错误

java - 我可以在调用 Axis 2 Java 中的 stub 之前设置 MessageContext 的属性吗

在 Windows 7 上安装 Android Studio 失败,找不到 JDK

javascript - Firebase 中数据对象的数字排序 ID

javascript - Firebase 版本 3 中的 changePassword() 方法