Извлечение определенных данных из базы данных Firebase


Я создаю приложение для чата на android, используя базу данных Firebase и Java. Всякий раз, когда пользователь впервые зарегистрирован, он сохраняет свое имя пользователя в базе данных под узлами user/UserID/profile/username. Имя пользователя хранится с помощью класса User. Здесь хранится значение имени пользователя. Однако, когда я пытаюсь что-то вроде

mDatabase.child("users").child(UserID).child("profile").child("username").toString();
Это дает мне путь к имени пользователя, но не само имя пользователя. Кто-нибудь знает, как получить значение самого имени пользователя?

EDIT: это дает мне ошибку, когда я run

DataSnapshot.child("users").child(mUserID).child("profile").child("username").getValue().toString();

Вот что показывает моя база данных Firebase под идентификатором пользователя.

Огневая база профиль база данных

2 4

2 ответа:

Вы не получаете значение должным образом. Вам нужно прикрепить слушателя к вашему ребенку и получать обновления. Вы делаете это вот так:

// Get a reference to your user
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("server/path/to/profile");

// Attach a listener to read the data at your profile reference
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Profile profile = dataSnapshot.getValue(Profile.class);
        System.out.println(profile.getUsername());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
    }
});
Дополнительную информацию и примеры можно найти на веб-сайте Firebase . Имейте в виду, что вы не делаете запросов на получение данных из Firebase. Вы присоединяете слушателей к детям, а затем получаете данные от слушателя. В этом примере предполагается, что у вас есть модель Profile с методом получения имени пользователя. Это вернет ваш объект Profile и это позволит вам получить любые данные, которые вам нужны от этого объекта.

Попробуйте это вы забыли о getValue (), который вернет значение не путь mDatabase.child("users").child(UserID).child("profile").child("username").getValue().toString();