Reputation: 8272
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
Reputation: 64
const docRef = addDoc(collection(db, "users"), {
//your data });
source https://firebase.google.com/docs/firestore/quickstart?authuser=0
Upvotes: 0
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);
Upvotes: 77
Reputation: 1010
In my case collection name is empty was causing the crash
FirebaseFirestore.getInstance().collection("").add(taravih)
Upvotes: 0
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
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-98c5dce4665f
and now is working fine.
Upvotes: 1
Reputation: 539
You are missing collection reference. i.e db.collection(** This is getting null **).
Upvotes: 6
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