Как я могу отфильтровать Flux, используя значение Mono, которое я получаю за элемент Flux? - PullRequest
0 голосов
/ 16 апреля 2020

Допустим, у меня есть Flux<User> и еще один Mono<Department>. Department имеет, а также id и DepartmentName.

У меня есть служба, которая возвращает отдел, которому принадлежит пользователь:

departmentService.getByUserId(userId: Int) : Mono<Department>

Я хочу отфильтровать пользователей, не входящих в отдел ( departmentService.getByUserId(userId: Int) возвращает пустое значение Mono) или находятся в отделе, отдел DepartmentName которого не является HR. Как это можно сделать?

users.flatMap { user ->
    departMentService.getByUserId(user.id)
    ...
}

1 Ответ

0 голосов
/ 16 апреля 2020

Мое решение состояло в том, чтобы использовать Pair для агрегации необходимой мне информации в фильтре:

users.flatMap { user ->
    departMentService.getByUserId(user.id)
       .map { Pair(user, it) }
}.filter { it.second == null || it.second.departmentName != "HR" }
...