Я не могу просто сослаться на ребенка под идентификатором пользователя из базы данных Firebase

1

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

База данных:

Изображение 174551

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("uid").child("username");
    mDatabaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                String username = Objects.requireNonNull(dataSnapshot.getValue()).toString();
                mName.setText(("username" + username ));
            } else {
                mName.setText(null);
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

TextView:

Изображение 174551

это всегда относится к остальной части, что я делаю не так?

Теги:
firebase
firebase-realtime-database

1 ответ

2
Лучший ответ

Дочерний объект, на который вы ссылаетесь в своем коде, не существует в базе данных, поэтому он всегда переходит к другой части.

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("uid").child("username");

В вашей базе данных у вас нет дочернего uid именем uid, под узлом Users вас разные идентификаторы пользователей, поэтому вам необходимо выполнить следующее:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId     = user.getUid();
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userId).child("username");

Это позволит получить идентификатор текущего пользователя для входа в систему, и вы сможете получить имя Username.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню