Вход в Firebase с использованием имени пользователя (не электронной почты) - PullRequest
0 голосов
/ 09 сентября 2018

Так что я получил этот код от кого-то, но я действительно не понимаю, как он работает.специально для UsersBean пользователиBean.Любая помощь?Спасибо.

Query query = databaseReference.child("users").orderByChild("email").equalTo(txvUsername.getText().toString().trim());
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            // dataSnapshot is the "issue" node with all children with id 0

            for (DataSnapshot user : dataSnapshot.getChildren()) {
                // do something with the individual "issues"
                UsersBean usersBean = user.getValue(UsersBean.class);

                if (usersBean.password.equals(txvPassword.getText().toString().trim())) {
                    Intent intent = new Intent(context, MainActivity.class);
                    startActivity(intent);
                } else {
                    Toast.makeText(context, "Password is wrong", Toast.LENGTH_LONG).show();
                }
            }
        } else {
            Toast.makeText(context, "User not found", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

База данных Firebase Realtime хранит данные в формате JSON. Из того, что я вижу, ваш код работает с базой данных, которая выглядит (по крайней мере) так:

{
  "users": {
    "userid1": {
      "email": "user1@domain.com",
      "password": "passwordforuser1"
    },
    "userid2": {
      "email": "user2@domain.com",
      "password": "passwordforuserid2"
    }
  }
}

Каждый пользователь из этой структуры представлен объектом UsersBean в приложении. Класс UsersBean создан специально для структуры JSON вашей базы данных и имеет одно открытое поле или свойство для каждого свойства в JSON для каждого пользователя.

Самый простой UsersBean для вышеприведенного JSON будет выглядеть так:

public class UsersBean {
  public String email;
  public String password;
}

Итак, здесь мы представляем каждое свойство JSON с открытым полем с (точным) тем же именем. Если вы сделаете это, клиент Firebase может прочитать свойства из DataSnapshot в соответствующий UsersBean с помощью:

UsersBean usersBean = user.getValue(UsersBean.class);

Поскольку вы получили код от кого-то, вам, вероятно, следует попросить этого человека также дать вам свой класс UsersBean (и другие классы бобов). Хотя их обычно нетрудно создать, нет смысла дублировать работу.

0 голосов
/ 09 сентября 2018

В этом коде вы запрашиваете базу данных firebase на узле «пользователи» и сравниваете значение вашего textView с сохраненной электронной почтой в базе данных. После этого вы добавляете SingleValueEventListener к вашему запросу, который работает асинхронно, и вы получите обратный вызов из firebase в функции onDataChange (), которая даст вам объект DataSnapshot, и вы можете получить значение из этого объекта, например dataSnapshot.getValue ()

В своем коде вы получаете все дочерние элементы вашего пользовательского узла из datasnapshot и помещаете их в цикл, чтобы сопоставить пароль пользователя с вашим полем txvPassword.

UserBean - это POJO или класс модели, который содержит такие поля, как пароль, адрес электронной почты и т. д. И вы конвертируете значение dataSnapshot в класс UserBean, чтобы вы могли легко сохранить все данные пользователя за один раз, например: -

UsersBean usersBean = user.getValue (UsersBean.class);

и вы можете использовать все значения класса UserBean для написания дальнейшей логики. Я надеюсь, что вы понимаете сейчас. Если у вас есть другие вопросы, вы можете спросить !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...