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

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

База данных:

enter image description here

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:

enter image description here

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

1 Ответ

2 голосов
/ 17 марта 2019

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

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

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

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

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

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