Вход в базу данных Firebase в реальном времени с определенным пользователем - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь войти из своих приложений для Android в базу данных Firebase в реальном времени. после входа я должен получить некоторую информацию о вошедшем в систему пользователе. Но он всегда показывает последнюю (последнюю запись из дерева JSON) информацию о пользователе из дерева JSON.

mDatabase = FirebaseDatabase.getInstance();
users = mDatabase.getReference("tbl_client");
userName = (EditText) findViewById(R.id.userName);
passWord = (TextView) findViewById(R.id.passWord);
login_button = (Button) findViewById(R.id.login_button);

login_button.setOnClickListener(new View.OnClickListener() {
   @Override
     public void onClick(View view) {      signIn(userName.getText().toString(),passWord.getText().toString());
            }
        });
private void signIn(final String username,final String password){
       users.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                for (DataSnapshot user : dataSnapshot.getChildren()) {
                    User usersBean = user.getValue(User.class);
                    if (usersBean.password.equals(passWord.getText().toString().trim())) {
                        Toast.makeText(LoginCardOverlap.this,userBean.getCustomerID(),Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(LoginCardOverlap.this, "Password is wrong", Toast.LENGTH_LONG).show();
                    }
                }
            } else {
                Toast.makeText(LoginCardOverlap.this, "User not found", Toast.LENGTH_LONG).show();
            } 
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

userBean.getCustomerID () всегда показывает запись последнего элемента из базы данных в реальном времениДерево JSON. На рисунке изображена структура базы данных: https://gomaxtracker.com/gmx_realtime_database_structure.png

1 Ответ

0 голосов
/ 22 октября 2019

Заставьте своих пользователей проходить аутентификацию с помощью Firebase Authentication (используя их электронные письма). Затем вы можете использовать их UID для их идентификации в вашей базе данных.

Authentication

RTDB

Примечаниечто в базе данных больше нет имен пользователей и паролей.

email не обязательно должен быть в базе данных, но его установка облегчает вам / администратору получение электронных писем.

Дополнительное поле row_in_table позволяет сортировать клиентов в представлении «все клиенты».

Затем в вашем приложении для отображения информации об одном клиенте у вас есть толькочитать в tbl_client/{UID}, а не в целом tbl_client.

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