Попытка получить существующий документ в моей коллекции, но он возвращает DocumentSnapshot как ноль.Есть какие-нибудь подсказки? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь получить документ из моей коллекции «пользователей», но он возвращает его как ноль. Пожалуйста, посмотрите на мою коллекцию и документы Моя коллекция

И вот мой код

private void gettingCurrentUser(){
        String currentUserEmail = firebaseAuth.getCurrentUser().getEmail();
        DocumentReference docRef = firebaseFirestore.collection("users").document(currentUserEmail);
        docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                if(task.isSuccessful()) {
                    DocumentSnapshot document = task.getResult();
                    if(document.exists()) {

                        test = document.getString("FirstName");

                    }
                    else {
                       Log.e(TAG, "Error message", task.getException());
                    }
                }
            }
        });
    }

Я также пытался получить каждое поле одно за другим, но это бесполезно

 private void gettingCurrentUser(){
    String currentUserEmail = firebaseAuth.getCurrentUser().getEmail();
    DocumentReference docRef = firebaseFirestore.collection("users").document(currentUserEmail);
    docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {

            String firstName = documentSnapshot.getData().get("FirstName").toString();
            String lastName = documentSnapshot.getData().get("LastName").toString();
            String emailAddress = documentSnapshot.getData().get("EmailAddress").toString();
            String dob = documentSnapshot.getData().get("DOB").toString();
            String address1 = documentSnapshot.getData().get("Address1").toString();
            String address2 = documentSnapshot.getData().get("Address2").toString();
            String city = documentSnapshot.getData().get("City").toString();
            String country = documentSnapshot.getData().get("Country").toString();
            String phonenumber = documentSnapshot.getData().get("Phonenumber").toString();

            User user = new User(firstName, emailAddress, lastName, phonenumber, address1, address2, city, country,dob);

            adminUser = user;

        }
    });
}

Я думаю, что это связано с каким-то асинхронным вызовом моей коллекции, но я не уверен. Как вы можете видеть в моем log , он возвращает документ, но по какой-то причине всегда имеет значение null при назначении ему «adminUser». Буду очень признателен, если вы поможете мне и дадите несколько советов по асинхронным вызовам. Заранее большое спасибо!


Ниже приведена ссылка на мой журнал, когда я пытаюсь получить документ из коллекции

https://wetransfer.com/downloads/2a134aa1396050585b18fa756fd7f48320190401143731/20844c


Ниже приведен мой код для получения имени пользователя в одном из моих занятий, и он отлично работает

 private void gettingData() {
   FirebaseUser user = firebaseAuth.getCurrentUser();
   String userEmail = user.getEmail();
   final DocumentReference docRef = firebaseFirestore.collection("users").document(userEmail);
   final String docPath = docRef.getPath();
   docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
       @Override
       public void onComplete(@NonNull Task<DocumentSnapshot> task) {
           if (task.isSuccessful()) {
               DocumentSnapshot document = task.getResult();
               if(document.exists()) {
                   Log.d(TAG, "Document Snapshot data: " + document.getData());
                   firstName = document.getData(). get("FirstName").toString();
                   textViewFirstName.setText("Welcome " + firstName);
               } else {
                   Log.d(TAG, "No such document");
               //    Toast.makeText(Home.this, "Failed Registration:2 "+task.getException(), Toast.LENGTH_SHORT).show();
               }
           } else {
               Log.d(TAG, "get failed with ", task.getException());
               //Toast.makeText(Home.this, "Failed Registration:3 "+task.getException(), Toast.LENGTH_SHORT).show();
           }
       }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...