Por que minha transação do Cloud Firestore não está se mesclando ao usar SetOptions.merge ()?
Apenas comecei com o Firestore e use oSetOptions.merge()
em uma transação do Cloud Firestore como esta, nada de especial, eu acho:
final Map<String, Object> visitorMap = new HashMap<>();
visitorMap.put(Visitor.NOTIFY_ON_CHAT_MESSAGE, true);
visitorMap.put(Visitor.TIME, FieldValue.serverTimestamp());
final DocumentReference docRefVisitor = mFirestore
.collection(VISITORS)
.document(theId)
.collection(VISITORS_USER)
.document(getCurrentUser().getUserId());
mFirestore.runTransaction(new com.google.firebase.firestore.Transaction.Function<void>() {
@Nullable
@Override
public void apply(@NonNull Transaction transaction) throws FirebaseFirestoreException {
transaction.set(docRefVisitor, visitorMap, SetOptions.merge());
}
})
Os documentos dizem:
Se o documento não existir, ele será criado. Se o documento existir, seu conteúdo será substituído pelos dados recém-fornecidos, a menos que você especifique que os dados devem ser mesclados no documento existente
Eu experimento issoVisitor.NOTIFY_ON_CHAT_MESSAGE
boolean
está substituindo existenteboolean
no banco de dados do Cloud Firestore Document. Eu pensei que oSetOptions.merge()
não substituiria os valores existentes? Talvez eu tenha perdido algo sobre comoTransação funciona ou isso é uma coisa relacionada à versão beta, já que CF é beta