Я пытаюсь получить документ из моей коллекции «пользователей», но он возвращает его как ноль. Пожалуйста, посмотрите на мою коллекцию и документы
Моя коллекция
И вот мой код
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();
}
}
});
}