Я храню структурированные данные в Firestore и хочу получить данные определенного вложенного документа, и они должны быть в реальном времени, потому что данные обновляются в реальном времени.
Вот структура в Firestore:
В общем, у меня есть следующий путь:
collection(Users).document(23).collection(orders).document(16)
or
/Users/23/orders/21
.. и я хочу получить данные документа 16 из коллекции «заказов».
Вот код
class FireStoreMapActivity{
DocumentReference doc;
void getData(){
doc = FirebaseFirestore.getInstance()
.collection("Users")
.document(23 + "")
.collection("orders")
.document(21 + "");
doc.addSnapshotListener(this, (documentSnapshot, e) -> {
if (documentSnapshot != null) {
if (documentSnapshot.exists()) {
List<String> images = (List<String>) documentSnapshot.get("images");
Log.e(">>>>>>>>>>> size => ", locHistory.size() + " ");
} else {
Log.e(">>>>>>>> error ", " documentSnapshot != exists");
}
} else {
Log.e(">>>>>>>> error ", " documentSnapshot = null");
}
});
}
}
Но каждый раз, нулевой журнал появляется Log.e(">>>>>>>> error ", " documentSnapshot = null");
ОБНОВЛЕНИЕ
хорошо, после печати исключения это кажется ошибкой разрешения!
com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.
Вот мой набор правил
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
, но как сообщить Firestore, что я на самом деле аутентифицированный пользователь.!?