我正在使用带有 ReactiveMongoRepositories 的 Spring 5 webflux。假设我有 2 个集合“Race”和“RaceParticipation”:
Race : {
"_id" : "ID",
"name" : "Name"
}
RaceParticipation : {
"_id" : "ID",
"userId" : "ID",
"raceId" : "ID"
}
我需要找到给定用户参与的竞赛页面。
我采用的解决方案是调用raceParticipationRepository.findByUserId("userId", PageRequest.of(0,10))
这返回一个Flux<UserParticipation>. 我应该从 response 和 call 中收集 id raceRepository.findAllById(ids)。
这是一个片段:
Flux<Race> findUserRaces(String userId, int page){
return raceParticipationRepository.findByUserId(userId, status,
PageRequest.of(page, 6))
.collectList()
.map(list -> list.stream()
.map(ParticipationRepository::getRaceId)
.collect(Collectors.toList()))
.flatMap(list -> raceRepository.findAllById(list));
}
此代码无法编译。"Required Flux<Race> but flatMap was inferred to Mono..."
关于我缺少什么或我应该怎么做的任何想法?