У меня есть коллекция, документы которой выглядят примерно так:
count: number
first: timestamp
last: timestamp
Значение first
не должно (почти) никогда изменяться после создания документа.
В операции пакетной записиЯ пытаюсь обновить документы в этой коллекции или создать документы, которые еще не существуют.Что-то вроде
batch.setData([
"count": FieldValue.increment(someInteger),
"first": someTimestamp,
"last": someTimestamp
], forDocument: someDocumentRef, mergeFields: ["count","last"])
Моя надежда заключалась в том, что, исключив first
из массива mergeFields
, Firestore установит count
и last
путем слияния его с существующим документом.или создайте новый и установите first
, только если у него не было предыдущего значения (т. е. до этой операции документ не существовал).Теперь мне ясно, что это не так, и вместо этого first
полностью игнорируется.Теперь мне интересно, что команда Firestore предназначала для этой ситуации.
Я знаю, что могу добиться этого с помощью транзакции, но это не очень хорошо согласуется с моей пакетной записью.Являются ли транзакции моим единственным вариантом или есть лучший способ добиться этого?