Relm
Relm

Reputation: 8272

Firebase Cloud Firestore : Invalid collection reference. Collection references must have an odd number of segments

I have the following code and getting an error :

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

And the 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());
            }
        });
    }

Upvotes: 85

Views: 130847

Answers (7)

Alisha Irshad
Alisha Irshad

Reputation: 64

const docRef = addDoc(collection(db, "users"), {
//your data });

source https://firebase.google.com/docs/firestore/quickstart?authuser=0

Upvotes: 0

Diego Venâncio
Diego Venâncio

Reputation: 6007

Then you need replace it:

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

with it:

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

You're welcome ;)

--UPDATE 2023--

If you are using the new Firebase Modular, then remember about the reference:

Firebase requires changing references: "collectionName" / "documentName" / "collectionName" / "documentId", etc.

setDoc(doc(db, "collectionName", userID, "anotherCollectionName", documentID), ...

OR

addDoc(collection(this.firestore, "collectionName", documentID), data);

ref

Upvotes: 77

Mohd Qasim
Mohd Qasim

Reputation: 1010

In my case collection name is empty was causing the crash

FirebaseFirestore.getInstance().collection("").add(taravih)

Upvotes: 0

Georges Damien
Georges Damien

Reputation: 39

I've encountered this issue when I provided an entity_Id that contains the "/" character ( my value was N/A ) when i was trying to read documentReference (DocumentReference docRef2 = fireStoreDb.Collection("Ass").Document(ass.Tel.ToString()) .Collection("vehicules").Document(ve.Immatriculation);). Here, the value ve.Immatriculation equals to N/A, and that was the problem.

Upvotes: 0

Radu Linu
Radu Linu

Reputation: 1261

I've encountered this issue when I provided a wrong entity_Id.

Instead of dojo/default/datasets/fe67ec58-6208-4234-a4ee-98c5dce4665f, I've provided fe67ec58-6208-4234-a4ee-98c5dce4665fand now is working fine.

Upvotes: 1

Vikash Sharma
Vikash Sharma

Reputation: 539

You are missing collection reference. i.e db.collection(** This is getting null **).

Upvotes: 6

Bob Snyder
Bob Snyder

Reputation: 38289

Hierarchical data structures and subcollections are described in the documentation. A collection contains documents and a document may contain a subcollection. The structure is always an alternating pattern of collections and documents. The documentation contains this description of an example:

Notice the alternating pattern of collections and documents. Your collections and documents must always follow this pattern. You cannot reference a collection in a collection or a document in a document.

Thus, a valid path to a collection will always have an odd number of segments; a valid path to a document, an even number. Since your code is trying to query a collection, the path length of four is invalid.

Upvotes: 65

Related Questions