final Mono<List> existingListMono = listMono.cache()
.flatMap(list -> readByName(list.getName()));
... в вашем методе сохранения возьмете ваш существующий список и отобразите его с помощью readByName()
.
Ваш метод readByName()
следующий:
private Mono<List> readByName(final String listName) {
if (listName != "list001") {
return Mono.empty();
}
return createList(listName);
}
(я не верю, что это связано с этой проблемой, но не используйте == или! = Для сравнения строк .)
Поскольку ваш listName
равен foo
, а не list001
, он возвращает пустой Mono
- таким образом, existingListMono
становится пустым моно, и, как следствие, также savedListMono
и trueResult
.
Когда вы вызываете ваш оператор switchIfEmpty()
однако вы передаете templateSave(existingListMono)
- и поскольку existingListMono
является пустым Mono
, как указано выше, метод save()
возвращает пустое Mono
.
... и когда вы блокируете на пусто Mono
вы получите ноль - отсюда и результат.
Таким образом, вы можете sh использовать listMono
вместо existingListMono
в выражении возврата в методе save()
, который даст вам результат, который вы после:
trueResult.switchIfEmpty(templateSave(listMono).map(x -> false))