Переход из режима реального времени в хранилище данных загрузки и отображение в виде текста - PullRequest
1 голос
/ 13 марта 2019

Я нахожусь в процессе перемещения своей базы данных из реального времени в пожарную, и у меня возникли некоторые проблемы.В настоящее время я пытаюсь загрузить данные из базы данных и отобразить их в виде текста.Это то, с чем я работаю

    @Override
protected void onStart() {
    super.onStart();

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
    String current_uid = mCurrentUser.getUid();

    db.collection("Users").document(current_uid).addSnapshotListener(new EventListener<DocumentSnapshot>() {
        @Override
        public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
            Log.d(TAG, "hello did this work");
            String username = documentSnapshot.getString("name");
            mName.setText(username);

        }
    });
}

, когда я запускаю отладчик. username равно нулю, поэтому я считаю, что он не получает данные, которые я дважды проверил ссылки.Я также верю, что это может быть связано с получением UID, но я не уверен и не могу понять, почему он не получит полный класс данных ниже https://pastebin.com/n6HVABM2

база данных: database

предыдущий код в режиме реального времени: https://pastebin.com/WQeimx7s

Где я нахожусь:

ОК, поэтому я подключил слушателей authstate, чтобыЯ получаю UID, но блок кода внутри слушателя не запускается, и я не могу понять, почему.Я пытался использовать mAuth.addAuthStateListener(mAuthListner); на OnStart, но это не сработало код, с которым я работаю

    @Override
protected void onStart() {
    super.onStart();
    //do i have to attach this listner?
    //mAuth.addAuthStateListener(mAuthListner);

    mAuth = FirebaseAuth.getInstance();

    mAuthListner = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

            String currentUser = mAuth.getCurrentUser().toString();

            db.collection("Users").document(currentUser).addSnapshotListener(new EventListener<DocumentSnapshot>() {
                @Override
                public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
                    Log.d(TAG, "hello did this work");
                    String username = documentSnapshot.getString("name");
                    mName.setText(username);

                }
            });

        }
    };
}

1 Ответ

0 голосов
/ 14 марта 2019

получается, когда я добавлял вновь созданного пользователя в базу данных, я не использовал идентификатор пользователя в качестве имени документа, поэтому, когда я пытался сослаться на него, ничего не было, я изменил его, чтобы при добавлении пользователяк БД он использовал uid, наложенный на случайную строку.

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