Как я могу получить родительское значение child в базе данных реального времени Firebase? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь разработать приложение для школы. Вот изображение моей базы данных. В моем коде у меня есть schoolEmail в виде строки (т.е. String email = iisd@gmail.com). Я хочу использовать эту строку, чтобы узнать, к какой школе принадлежит это электронное письмо (в данном случае IISD). Я хочу получить это значение в виде строки.

Пожалуйста, посмотрите эту картинку

enter image description here 1

А вот мой код

public class HomeScreen extends AppCompatActivity {

    TextView schoolName,schoolEmail,schoolPhone,schoolAddress;
    Button logoutSchool;
    DatabaseReference databaseReference;
    String email;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);
        schoolName = findViewById(R.id.schoolName);
        schoolEmail = findViewById(R.id.schoolEmail);
        schoolPhone = findViewById(R.id.schoolPhone);
        schoolAddress = findViewById(R.id.schoolAddress);
        logoutSchool = findViewById(R.id.loginSchool);
        databaseReference =         FirebaseDatabase.getInstance().getReference();
        email = "iisd@gmail.com";

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                // This method is called once with the initial value and again
                // whenever data at this location is updated.
                DataSnapshot dataSnapshot1 = dataSnapshot.getChildren();
                String value = dataSnapshot.child("Schools").getKey();

                Toast.makeText(HomeScreen.this, value, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(DatabaseError error) {

            }
        });
    }
}

1 Ответ

1 голос
/ 23 апреля 2020

Попробуйте следующее:

        databaseReference.child("Schools").orderByChild("schoolEmail").equalTo("iisd@gmail.com").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()){
                    String value = ds.getKey();
                    Toast.makeText(HomeScreen.this, value, Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
                throw databaseError.toException();
            }
        });

Здесь ваша ссылка находится на узле Schools, затем вы используете запрос orderByChild("schoolEmail").equalTo("iisd@gmail.com"), чтобы проверить, если schoolEmail = email_value, а затем для l oop вы можете получите ключ.

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