Я не могу получить данные пользователя из моей базы данных firebase в Android?

#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. Вы выполнили код, который я дал в своем ответе? Что это делает?