web-dev-qa-db-fra.com

Firebase Cloud Firestore: Référence de collection non valide. Les références de collection doivent comporter un nombre impair de segments

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());
            }
        });
    }
18
Relm

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.

20
Bob Snyder

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 ;)

22
Diego Venâncio

Il manque la référence à la collection . i.e db.collection (** This devient null **).

0
Vikash Sharma