Я пытаюсь выполнить две операции в транзакции базы данных.
- Добавление нового документа в коллекцию A. Это успешно
- обновление полей существующего документа в коллекции B. Это не удалось
Также проверено этот прослушиватель успеха также вызывается, но поля документа не обновляются. Путь к ссылке на документ также правильный.
database.runTransaction((Transaction.Function<Void>) transaction -> {
message.createdAt = new Timestamp(new Date()); // just to be safe if the UI is not creating this.
collRef.add(ModelMapper.prepareMessageModel(message)).addOnCompleteListener(task -> {
// Added a new document in collection A
});
CollectionReference collRefConf = composer.composeConversationCollectionReference(conversationRequest);
collRefConf.get(Source.SERVER).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
// Updating an existing document in collection B
ConversationConfigRequest configRequest = new ConversationConfigRequest(message.conversationDocumentId,
document.getId());
DocumentReference configDocReference = composer.composeConversationConfigDocumentReference(configRequest);
configDocReference.update(
FirestoreConstants.ConversationProperties.ConversationConfig.LAST_MESSAGE, message.message
)
.addOnSuccessListener(aVoid -> {
Log.d(Config.LOGTAG, "onSuccess: ");
})
.addOnFailureListener(e -> Log.d(Config.LOGTAG, "onFailure: "+e));
}
}
}).addOnFailureListener(e -> {
Log.d("", "pullConversationConfigId: ");
});
return null;
});