Я работаю с полями типа reference
в Firestore.
Это мой код:
DocumentReference calRef = db.collection(calendarPath).document(fechaYYYY).collection(fechaMM).document(fechaDD);
calRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot calSnapshot,
@Nullable FirebaseFirestoreException e) {
DocumentReference dataRef=calSnapshot.getDocumentReference("1");
if (e != null || dataRef==null) {
launchVolley();
return;
}
if (calSnapshot != null && calSnapshot.exists()) {
dataRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot dataSnapshot) {
mBreviario = dataSnapshot.toObject(Breviario.class);
Log.d(TAG,dataSnapshot.toString());
showData();
}
});
} else {
launchVolley();
}
}
});
Здесь DocumentReference dataRef=calSnapshot.getDocumentReference("1");
Я беру одну ссылку на другой документ.
Здесь if (calSnapshot != null && calSnapshot.exists()) {
Я пытаюсь получить данные по этой ссылке.
Это работает нормально, но если ссылка на документ, взятая на dataRef
, не существует, на самом деле у меня ошибка NPE.
Мой журнал показывает, что:
D/OficioActivity: DocumentSnapshot{key=liturgia/lh/1/307040501,
metadata=SnapshotMetadata{hasPendingWrites=false, isFromCache=false},
doc=null}
Здесь я вижу: doc=null
Я думаю, что это ссылка на мой документ. Но кто я могу контролировать, когда это ноль.
Здесь я попытался сделать этот элемент управления:
if (e != null || dataRef==null) {
launchVolley();
return;
}
Но не работает.