Я могу добавить объект в коллекцию Firebase, используя метод CollectionReference.add(), а затем вызвать addOnSuccessListener() для возвращенного объекта, чтобы получить фактические значения, хранящиеся в Firebase. Однако Я хочу запустить это внутри блока транзакций, чтобы избежать кэширования записей, которые в противном случае не завершатся сбоем, когда клиент находится в автономном режиме.
Но у объектов Transaction есть только методы .get, .delete, .set и .update. Как добавить значение в коллекцию внутри транзакции?
.set НЕ позволяет использовать addOnSuccessListener и НЕ позволяет возвращать идентификатор документа (т. е. не возвращает DocumentSnapshot). У меня есть транзакция, которая требует идентификатор созданного документа для последующих частей транзакции, но кажется, что транзакция не позволяет этого (вероятно, по причинам, указанным выше).




Вы можете использовать метод set(), как он сказал, я приведу пример:
transaction.set(CollectionReference.doc(), {
attribute1: ...,
...
attributen: ...});
с помощью CollectionReference.doc() вы создаете новый документ со значениями, указанными в объекте
установлен, работает как добавление, если документ не найден