Поток, который зависит от разрешения моно - PullRequest
0 голосов
/ 09 января 2020

Я изучаю реактивное программирование и spring-webflux, но я не знаю, как вернуть Flux, зависящий от разрешения Mono.

interface FooRepository : ReactiveMongoRepository<Foo,String> {
    fun findAllByCreatedBy(email: String): Flux<Foo>
}

fun getCurrentUser() = ReactiveSecurityContextHolder.getContext()
            .map { ctx -> ctx.authentication.principal }
            .cast(UsernamePasswordAuthenticationToken::class.java)
            .map(UsernamePasswordAuthenticationToken::getPrincipal)
            .cast(User::class.java)
            .map(User::email)

 fun list(): Flux<ResponseEntity<Foo>> {
        val fooes = findAllByCreatedBy(getCurrentUser()) // This not work because getCurrenUser() returns a Mono<String>
        return fooes.map { o -> ResponseEntity(o, HttpStatus.OK)
 }

Как мне ждать или связывать getCurrentUser () вывод с помощью findAllByCreatedBy ()?

1 Ответ

1 голос
/ 09 января 2020

Для создания цепочек Моно и Flux Вы можете использовать flatMapMany оператор;

Например:

getCurrentUser()
 .flatMapMany(userEmail-> findAllByCreatedBy(userEmail))
...