Я использую 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
.
При попытке выполнить само действие возвращает значение имени пользователя. скриншот моей базы данных