Я использую Spring 5 webflux с ReactiveMongoRepositories.
Предположим, у меня есть 2 коллекции "Race" и "RaceParticipation":
Race : {
"_id" : "ID",
"name" : "Name"
}
RaceParticipation : {
"_id" : "ID",
"userId" : "ID",
"raceId" : "ID"
}
Мне нужно найти страницу рас, в которых участвовал данный пользователь.
Решение, с которым я пошел, это позвонить raceParticipationRepository.findByUserId("userId", PageRequest.of(0,10))
Это возвращает Flux<UserParticipation>
.
Я должен собрать идентификаторы из ответа и позвонить 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..."
Есть идеи о том, что мне не хватает или как мне поступить?