Данные вставлены, но когда я читаю данные, в firebase android всегда отображается ноль - PullRequest
0 голосов
/ 17 апреля 2020

Я изменил свой проект Firebase и после его изменения он не работает вообще. Я много работаю, меняя код в каждом аспекте, но мне не повезло, и я не могу найти, в чем проблема.

Я много искал и читал статьи, но не знаю, почему после изменения произошла ошибка проекта.

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

мой код


user = username.getText().toString();
pwd = password.getText().toString();
reference = FirebaseDatabase.getInstance().getReference().child("AdminUsers");

Query qry = reference.orderByChild("email").equalTo(user);

qry.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists())
        {
            for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
            {
                String cpwd = String.valueOf(dataSnapshot1.child("password").getValue());
                password.setText(cpwd);
                if (cpwd.equals(pwd))
                {
                    SharedPreferences pref = getSharedPreferences("login",MODE_PRIVATE);
                    SharedPreferences.Editor edit = pref.edit();
                    edit.putString("logged","true");
                    edit.putString("username",user);
                    edit.commit();
                    Toast.makeText(Login.this, "Login Successful", Toast.LENGTH_SHORT).show();
                    Intent home = new Intent(getApplicationContext(),MainActivity.class);
                    startActivity(home);
                    finish();
                }
                else
                {
                    pd.cancel();
                    Toast.makeText(getApplicationContext(),"Invalid Password "+cpwd,Toast.LENGTH_SHORT).show();
                }

            }
        }
        else
        {
            pd.cancel();
            Toast.makeText(Login.this, "Invalid Username", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        pd.cancel();
        Toast.makeText(Login.this, "Server Error", Toast.LENGTH_SHORT).show();
    }
});

Firebase data tree image

1 Ответ

0 голосов
/ 17 апреля 2020

Вы находитесь на узле AdminUsers, чтобы получить password и email, вам не нужно итерировать, поэтому просто удалите for для l oop:

for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren())

И используйте:

dataSnapshot.child("password").getValue();

Также убедитесь, что значение user действительно существует в вашей базе данных. Этот запрос reference.orderByChild("email").equalTo(user) подобен сообщению, где адрес электронной почты равен user_value

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