Извлечение определенных данных из базы данных 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 ответа:
Вы не получаете значение должным образом. Вам нужно прикрепить слушателя к вашему ребенку и получать обновления. Вы делаете это вот так:
Дополнительную информацию и примеры можно найти на веб-сайте Firebase . Имейте в виду, что вы не делаете запросов на получение данных из Firebase. Вы присоединяете слушателей к детям, а затем получаете данные от слушателя. В этом примере предполагается, что у вас есть модель// 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()); } });
Profile
с методом получения имени пользователя. Это вернет ваш объектProfile
и это позволит вам получить любые данные, которые вам нужны от этого объекта.