У меня есть база данных Firestore, куда я записываю данные в WriteBatch()
.Так что я столкнулся со странным поведением при совершении изменений.Мои данные обновляются или устанавливаются, только если я что-то делаю с переменной batch.commit()
Код должен объяснить мою проблему лучше:
...
...
Firestore db = FirestoreClient.getFirestore();
Map<String, Foo> test = new HashMap<>();
test.put("Entry1", new Foo("Bar1", 5));
test.put("Entry2", new Foo("Bar2", 7));
WriteBatch batch = db.batch();
DocumentReference ref;
for (String key : test.keySet()) {
ref = db.collection("foo").document(key);
batch.set(ref, test.get(key), SetOptions.mergeFields("var1", "var2"));
}
// if I just call batch.commit() here data will not be overwritten on a change of i.e "Entry1"
// but if I call the next 2 lines everything is working as intended
ApiFuture<List<WriteResult>> result = batch.commit();
result.get();
У меня нет проблем с добавлением этих строк в мой код, но япытаюсь понять, почему это происходит.