检查Firebase数据库中是否存在用户

时间:2017-05-04 14:01:39

标签: android firebase firebase-realtime-database

我正在尝试使用addListenerForSingleValueEvent方法在Database中检查它,但是当我调试代码时,跳过了侦听器,这是我的侦听器代码。

    mTheReference = FirebaseDatabase.getInstance().getReference();
    mUsersReference = mTheReference.child("Users");

   mUsersReference.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {

                                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                                    User post = postSnapshot.getValue(User.class);
                                    String username = post.getUsername();

                                    if (username.equals(mUserView.getText().toString())) {
                                        alreadyRegisteredAccount++;
                                    }
                                }

                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });
if (alreadyRegisteredAccount != 0) {
                        mUserView.setError("Usuario ya registrado, intenta de nuevo.");
                    } else {
                        User user = new User();
                        user.setUsername(mUserView.getText().toString());
                        user.setPassword(mPasswordView.getText().toString());
                        mUsersReference.push().setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                Toast.makeText(getApplicationContext(), "YAAAY!", Toast.LENGTH_LONG).show();
                            }
                        });
                    }

我不知道为什么跳过它,我需要一些让我在用户尝试注册新用户名时检查用户是否存在的东西。这是数据树:

{
 users:
  {
    -KjGdQAZEfJ-qR5pM0Ko:
     {
       username :  fmigg
       password :  broxton1
     }
    -KjGq7AghI9ftiX6Ih-q:
     {
       username :  aston
       password :  creative123
     }
  }
}

1 个答案:

答案 0 :(得分:2)

您的DatabaseReference错了。请更改此行:

mUsersReference = mTheReference.child("Users");

mUsersReference = mTheReference.child("Users").child(userId);

其中userIdpush()方法生成的唯一ID。

希望它有所帮助。