Как исправить documentSnapshot.getString () всегда возвращает значение NULL в отдельном классе, но при использовании в деятельности возвращает значение? - PullRequest
0 голосов
/ 29 мая 2019

Я использую Firestore в качестве базы данных для своего приложения.Когда для извлечения определенного значения из базы данных используется метод documentSnapshot.getString(), это всегда null.

Идея состоит в том, что когда любой пользователь создает новый пост в моем приложении, приложение сохраняет его и имя пользователя.в базе данных.

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

@Override
public void newPost(String post) {
FirebaseAuth auth = FirebaseAuth.getInstance();
final FirebaseUser users = auth.getCurrentUser();

currentUser = users.getEmail();
if (currentUser != null) {

    userSearch = db.collection("users")
            .document(currentUser)
            .get().toString();


    db.collection("users")
            .document(currentUser)
            .get()
            .addOnSuccessListener(new                        
OnSuccessListener<DocumentSnapshot>() {
                @Override
                public void onSuccess(DocumentSnapshot 
documentSnapshot) {
                    if (documentSnapshot.exists()) {
                        userName = 
documentSnapshot.getString("first_name");
                    }
                }
            });
}

Map<String, Object> postCase = new HashMap<>();
postCase.put("user_posted_email", currentUser);
postCase.put("user_posted_name", userName);
postCase.put("post", postBody = post);
db.collection("posts").add(postCase)
        .addOnCompleteListener(new 
OnCompleteListener<DocumentReference>() {
            @Override
            public void onComplete(@NonNull Task<DocumentReference> 
task) {
                if (task.isSuccessful()) {
                    postEvent(PostEvent.onPostingSuccess);
                } else {
                    postEvent(PostEvent.onPostingError);
                }
            }
        });

}

Предполагается опубликовать имя пользователя после извлечения его из коллекции пользователей, ноего всегда null.

При попытке выполнить само действие возвращает значение имени пользователя. скриншот моей базы данных

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