ace
ace

Reputation: 12044

How to get Flux<T> from Mono<K> in Spring Reactive API?

I have two independent collections in NoSQL document db Photo and Property where Photo has propertyId parameter meaning that I can find all photos that belong to a given property like a house. Normally without reactive I would simply do:

Property property = ....
List<Photo> = photoService.findByPropertyId(property.getId());

Just two lines. How to do above in Reactive Programming when I have

`Mono<Property> and I want to find Flux<Photo>

without using block()?` Assume aphotoService.findByPropertyId return List and in reactive case it returns Flux.

Upvotes: 0

Views: 354

Answers (1)

Simon Basl&#233;
Simon Basl&#233;

Reputation: 28351

You should use flatMapMany, which triggers an async processing from the Mono's value which can emit multiple elements:

Flux<Photo> photoFlux = propertyMono
    .flatMapMany(prop -> photoService.findByPropertyId(prop.getId()));

Upvotes: 2

Related Questions