Open plammens opened 2 months ago
@plammens Looks like for update
, you'll have to escape spam-eggs
with backticks, like doc.update({"`spam-eggs`": 123})
.
It definitely should be more consistent, because for set
, you'd do doc.set({"spam-eggs": 123})
(and backticks get put into the field name) but for update
you need to do the backtick escape. The rationale behind needing the backtick escape might be explained here in the proto file for documents: https://github.com/googleapis/googleapis/blob/9f96d27b2eb1db1943747c3a241b2f2443e4a75b/google/firestore/v1/document.proto#L41-L64
Environment details
google-cloud-firestore
version: 2.17.0Steps to reproduce
doc.update
with some keys containing dashes. Either directly or wrapping in a FieldPath.Code example
This gives an error because keys are interpreted as field paths with dots and whatnot.
But I can't explicitly specify the field path either to allow field names with special characters:
So there is no way to update fields with dashes. The operation
doc.set(..., merge=True)
has different semantics, namely it creates the document if it doesn't exist.Stack trace