10
votes

I'm getting the rather simple error:

Document references must have an even number of segments.

I'm aware of what it is telling me and how to fix it, however it is giving me this error on a collection reference.

CollectionReference collectionReference = getFirebaseInstance()
.collection(Constants.USERS)
.document(userId)
.collection(Constants.CONTACTS);

In my database the path is (COLLECTION) < DOCUMENTS > (COLLECTION) < DOCUMENTS > I'm trying to get all contacts for a user at users/{id}/contacts but it just throws this error, any ideas?

getFirebaseInstance is a method I've created to always get the current

FirebaseFirestore.getInstance();
2
Ok I think this maybe to do with this userId variable I'll test and post backmartinseal1987
Use slash way like "users/userid/contacts"Hemanth S

2 Answers

21
votes

Your userId variable probably has a slash in it. Document ids can't have slashes, since they are interepreted as dividers between collections and documents when forming the "path" to a document.

It's also possible that the string may be empty, which is invalid.

0
votes

Because neither the above nor other similar posts helped me..

I got this error when calling set data and then immediately after .getDocument(...) (i.e. reading data). When I called my read data method in the completion handler of the setData method then the error message disappeared.