#android #firebase #firebase-realtime-database
#Android #firebase #firebase-realtime-database
Вопрос:
структура моей базы данных такова: rootNode-> node1-> Uid-> RandomId (который я получаю с помощью метода push.getKey ()), затем мои данные-> (имя, электронная почта, телефон)
projectName:
SampleUsers
Uid
RandomKey1(i get this random key by push.getKey() method)
Name : User1
Email : user@email.com
Phone : 1234567890
RandomKey2
Name : User1
Email : user@email.com
Phone : 1234567890
Я хочу показывать данные пользователя на странице его профиля при входе пользователя в систему. Но я не могу получить этот случайный ключ ;
mUserRef = firebaseDatabase.getReference("Users").child(mAuth.getCurrentUser().getUid());
Комментарии:
1. Почему у вас есть несколько дочерних узлов под каждым пользователем? Почему бы просто не иметь
/SampleUsers/Uid/Name: "Machine Learning"
?2. потому что я хочу хранить информацию о каждом пользователе внутри узла SampleUsers. когда пользователь зарегистрируется / войдет в систему, его узел Uid добавит в узел SampleUsers, а затем всякий раз, когда он будет вводить какие-либо данные, он будет храниться внутри его узла Uid. @FrankvanPuffelen Спасибо
3. Извините, это мне непонятно. Можете ли вы добавить фактический JSON, который вы хотите, к своему вопросу?
4. drive.google.com/file/d/1K74KYkfmJfVsMyjviEtEOhO7qOBTl4eE / … ссылка на файл json. я хочу распечатать данные uid узлов продуктов. мы можем получить этот uid, когда пользователь войдет в систему. тогда для этого uid есть несколько узлов со случайными ключами, я хочу распечатать эти данные из каждого случайного ключа этого конкретного uid. Спасибо @FrankvanPuffelen
Ответ №1:
Чтобы отобразить все дочерние узлы данного снимка, выполните итерацию DataSnapshot.getChildren()
. Так, например:
DatabaseReference userRef = firebaseDatabase.getReference("Users").child(mAuth.getCurrentUser().getUid());
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
System.out.println(childSnapshot.getKey()); // the push ID
System.out.println(childSnapshot.child("Name").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
Комментарии:
1. Я хочу распечатать все сведения о каждом случайном узле узла Uid, например: — Имя: Пользователь1, электронная почта: user1@email.com , Телефон: 1234567890. ; Имя: Пользователь2, электронная почта: user2@email.com , Телефон : 23840238408 ……. и так далее
2. Вы выполнили код, который я дал в своем ответе? Что это делает?