Получение дочернего значения -firebase-

System.out.println(ref.child("[email protected]").child("_email"));

* Я пытаюсь получить значение дочернего, но все время я получаю URL-адрес значения как получить значение этого URL-адреса, как я пытаюсь использовать этот код, но он получает мне URLi хотят получить _email значение.

Ответ 1

Вы смотрите на концепцию с неправильного угла. При использовании ref.child("[email protected]").child("_email") вы просто указываете на конкретное место в своей базе данных и ничего больше. Если вы хотите получить данные в этом конкретном месте, рассмотрите эти два способа.

Сначала, если вы хотите получить данные только один раз, вы можете сделать следующее:

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
 DatabaseReference mostafa = ref.child("Users").child("[email protected]").child("_email");

 mostafa.addListenerForSingleValueEvent(new ValueEventListener() {
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
    String email = dataSnapshot.getValue(String.class);
    //do what you want with the email 
 }

 @Override
 public void onCancelled(DatabaseError databaseError) {

 }
 });

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

mostafa.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    String email = dataSnapshot.getValue(String.class);

    display.setText(email);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

Обратите внимание на разницу между этими двумя методами. Сначала выполняется только одно время, а второе - для извлечения данных всякий раз, когда изменяется значение.

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

Ответ 2

С ref.child("[email protected]").child("_email") вы просто устанавливаете ссылку на объект. Взгляните на документацию java firebase для извлечения данных.

Чтобы получить данные, вам нужно будет установить прослушиватель для справки

ref.child("[email protected]").child("_email").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        // data available in snapshot.value()
    }
    @Override
    public void onCancelled(FirebaseError firebaseError) {
    }
});

Ответ 3

Я хочу получить только одну информацию из базы данных. Сделано много усилий, но не удалось, структура данных моей базы выглядит следующим образом.

структура данных моей пожарной базы

и пытается что-то подобное в моем коде

        DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("users").child("userID");
    myRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String email = dataSnapshot.getValue(String.class);
            //do what you want with the email
            setDisplayName.setText(email);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            setDisplayName.setText("data not get" + databaseError );
        }
    });