Error: HTTP Error 400, The Request has errors. Firebase Firestore Cloud Functions
This was happening to me too, then I realized that at the 2nd level, firestore only allows documents and not collections.
I was attempting to listen to this path:
/collection/document/{wildcard}
You can either do something like
/collection/{wildcard}
or
/collection/document/collection/{wildcard}
I had this problem as well. In my case it was because my trigger path had a trailing slash in the document path.
So changing:
functions.firestore
.document('some_path/{pushId}/')
To:
functions.firestore
.document('some_path/{pushId}')
Fixed it it for me. It seems like this is caused by a variety of issues and the firebase cli does not do a good job at explaining the reasons why.
For me none of the answers helped me. In the end I got a list of steps (from Google) to pinpoint the problem. If you run:
firebase --debug --only functions deploy
it will give a more detailed error-message, what was in my case:
HTTP RESPONSE BODY <?xml version='1.0' encoding='UTF-8'?><Error><Code>EntityTooLarge</Code><Message>Your proposed upload is larger than the maximum object size specified in your Policy Document.</Message><Details>Content-length exceeds upper bound on range</Details></Error>
Okej this is what you need to look at.
since you have
exports.yourFunctionName = functions.firestore.document
the thing you need to look at is the .document
Your path MUST point to a document and not to a collection.
so this will not work :
/level1/{level1Id}/level2
<- it points to a collection
this will work :
/level1/{level1Id}/level2/{level2Id}
cloud function will look for when a document has an action
Hope this will help anybody