J'ai le code suivant et obtenir une erreur:
Invalid collection reference. Collection references must have an odd number of segments
Et le code:
private void setAdapter() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("app/users/" + uid + "/notifications").get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
Log.d("FragmentNotifications", document.getId() + " => " + document.getData());
}
} else {
Log.w("FragmentNotifications", "Error getting notifications.", task.getException());
}
});
}
Les structures de données hiérarchiques et les sous-collections sont décrites dans la documentation . Une collection contient des documents et un document peut contenir une sous-collection. La structure est toujours un motif alterné de collections et de documents. La documentation contient cette description d'un exemple:
Notez le motif alterné de collections et de documents. Votre les collections et les documents doivent toujours suivre ce modèle. Vous ne pouvez pas référencer une collection dans une collection ou un document dans un document.
Ainsi, un chemin valide vers une collection aura toujours un nombre impair de segments; un chemin valide vers un document, un nombre pair. Étant donné que votre code tente d'interroger une collection, la longueur de chemin d'accès de quatre n'est pas valide.
Ensuite, vous devez changer cela:
db.collection("app/users/" + uid + "/notifications")...
pour ça:
db.collection("app").document("users").collection(uid).document("notifications")
Vous êtes le bienvenu ;)
Il manque la référence à la collection . i.e db.collection (** This devient null **).