Установить значение поля в документе Firestore, только если поле еще не было установлено - PullRequest
1 голос
/ 31 мая 2019

У меня есть коллекция, документы которой выглядят примерно так:

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 предназначала для этой ситуации.

Я знаю, что могу добиться этого с помощью транзакции, но это не очень хорошо согласуется с моей пакетной записью.Являются ли транзакции моим единственным вариантом или есть лучший способ добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...