Firebase Cloud Firestore: ongeldige verzamelingsreferentie. Collectiereferenties moeten een oneven aantal segmenten hebben

Ik heb de volgende code en krijg een foutmelding:

Invalid collection reference. Collection references must have an odd number of segments

En de 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());
            }
        });
    }

Antwoord 1, autoriteit 100%

Dan moet je dit wijzigen:

db.collection("app/users/" + uid + "/notifications")...

hiervoor:

db.collection("app").document("users").collection(uid).document("notifications")

Graag gedaan 😉


Antwoord 2, autoriteit 91%

Hiërarchische gegevensstructuren en subverzamelingen worden beschreven in de documentatie. Een collectie bevat documenten en een document kan een subcollectie bevatten. De opbouw is altijd een afwisselend patroon van collecties en documenten. De documentatie bevat deze beschrijving van een voorbeeld:

Let op het afwisselende patroon van collecties en documenten. Jouw
collecties en documenten moeten altijd dit patroon volgen. Jij kan niet
verwijzen naar een verzameling in een verzameling of een document in een document.

Dus een geldig pad naar een verzameling heeft altijd een oneven aantal segmenten; een geldig pad naar een document, een even getal. Omdat je code een verzameling probeert te doorzoeken, is de padlengte van vier ongeldig.


Antwoord 3, autoriteit 9%

Je mist een collectiereferentie.
d.w.z. db.collection(** Dit wordt null **).


Antwoord 4, autoriteit 2%

Ik ben dit probleem tegengekomen toen ik een verkeerde entiteit_Id opgaf.

In plaats van dojo/default/datasets/fe67ec58-6208-4234-a4ee-98c5dce4665f,
Ik heb fe67ec58-6208-4234-a4ee-98c5dce4665fopgegeven en werkt nu prima.


Antwoord 5

Ik ben dit probleem tegengekomen toen ik een entiteit_Id opgaf die het teken “/” bevat (mijn waarde was N.v.t.) toen ik documentReference (DocumentReference docRef2 = fireStoreDb.Collection(“Ass”) probeerde te lezen. (ass.Tel.ToString())
.Collection(“voertuigen”).Document(ve.Immatriculation);).
Hier is de waarde ve.Immatriculation gelijk aan N/A, en dat was het probleem.

Other episodes