Как я могу добавить документ в коллекцию Firebase внутри транзакции?

Я могу добавить объект в коллекцию Firebase, используя метод CollectionReference.add(), а затем вызвать addOnSuccessListener() для возвращенного объекта, чтобы получить фактические значения, хранящиеся в Firebase. Однако Я хочу запустить это внутри блока транзакций, чтобы избежать кэширования записей, которые в противном случае не завершатся сбоем, когда клиент находится в автономном режиме.

Но у объектов Transaction есть только методы .get, .delete, .set и .update. Как добавить значение в коллекцию внутри транзакции?

установлен, работает как добавление, если документ не найден

a_local_nobody 24.07.2019 13:13

.set НЕ позволяет использовать addOnSuccessListener и НЕ позволяет возвращать идентификатор документа (т. е. не возвращает DocumentSnapshot). У меня есть транзакция, которая требует идентификатор созданного документа для последующих частей транзакции, но кажется, что транзакция не позволяет этого (вероятно, по причинам, указанным выше).

LeadDreamer 07.11.2019 03:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
97
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

из документации:

Таким образом, вы можете вызвать set в своей транзакции, чтобы создать любую новую документацию, если она не найдена. Надеюсь это поможет

Как вы можете использовать метод set() для получения автоматически сгенерированного идентификатора документа?

AWhitford 12.11.2019 20:11

Вы можете использовать метод set(), как он сказал, я приведу пример:

transaction.set(CollectionReference.doc(), {
                attribute1: ...,
                ...
                attributen: ...});

с помощью CollectionReference.doc() вы создаете новый документ со значениями, указанными в объекте

Другие вопросы по теме