#android #google-cloud-firestore
#Android #google-облако-firestore
Вопрос:
У меня есть коллекция Firestore, подобная этой:
Взгляните на коллекцию kost. В нем есть 4 документа, и в каждом документе есть следующие поля: fasilitas, gender, harga и т. Д
Для каждого документа я хочу получить все поля.
Теперь у меня есть это:
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
DocumentReference docRef = firestore.collection("kost").document();
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()){
for (DocumentSnapshot ds:task.getResult()){
}
}
}
});
Это даже неправильный код, task.getResult()
подчеркнутый:
foreach не применимо к типу ‘com.google.firebase.firestore.DocumentSnapshot
Тогда каков правильный способ?
Ответ №1:
Ваши проблемы в этом коде:
DocumentReference docRef = firestore.collection("kost").document();
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
Ваши docRef
точки указывают на новый пустой документ. Вместо этого вы хотите указать на всю коллекцию, как показано в документации по чтению всех документов в коллекции:
db.collection("kost")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() " => " document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});