我有以下模型:
class Person {
List<Address> addresses;
}
我使用ReactiveMongoRepository
来检索Mono。
public interface PersonRepository extends ReactiveMongoRepository<Person, String>{
}
但是我找不到从地址列表中检索地址通量的方法。 这是我想要实现的目标的签名:
Flux<Addresses> getAddressesByPersonId(String personId)
我尝试了以下方法:
public Flux<Addresses> getAddressesByPersonId(String personId){
Mono<Person> person = personRepository.findById(personId);
return person.map(e -> e.getAdresses()).flux()
}
但是我得到了错误:
Type mismatch: cannot convert from Flux<List<Person>> to Flux<Person>
问题:如何获取给定Person
的存储为列表的地址流量?
答案 0 :(得分:1)
使用flatMapMany。它是flatMap,具有从Mono过渡到Flux世界的额外纽带。
public Flux<Addresses> getAddressesByPersonId(String personId){
Mono<Person> person = personRepository.findById(personId);
return person.flatMapMany(e -> e.getAddresses()).flux()
}
https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html
rx运算符将为输入Mono类型提供别名,以保留所得Mono的“至多”属性。例如,flatMap返回一个Mono,而存在一个flatMapMany别名,该别名可能具有多个发射。