如何使用每个 Flux 元素获得的 Mono 值来过滤 Flux?
How can I filter a Flux using the value of a Mono that I get per Flux element?
假设我有一个 Flux<User>
和另一个 Mono<Department>
。 Department
有 id 和 departmentName。
我有一项服务returns用户所属的部门:
departmentService.getByUserId(userId: Int) : Mono<Department>
我想过滤不在某个部门(departmentService.getByUserId(userId: Int)
returns 一个空的单声道)或在 departmentName 不是 HR 的部门中的用户。如何做到这一点?
users.flatMap { user ->
departMentService.getByUserId(user.id)
...
}
我的解决方案包括使用 Pair 传播我在过滤器中需要的信息的聚合:
users.flatMap { user ->
departMentService.getByUserId(user.id)
.map { Pair(user, it) }
}.filter { it.second == null || it.second.departmentName != "HR" }
假设我有一个 Flux<User>
和另一个 Mono<Department>
。 Department
有 id 和 departmentName。
我有一项服务returns用户所属的部门:
departmentService.getByUserId(userId: Int) : Mono<Department>
我想过滤不在某个部门(departmentService.getByUserId(userId: Int)
returns 一个空的单声道)或在 departmentName 不是 HR 的部门中的用户。如何做到这一点?
users.flatMap { user ->
departMentService.getByUserId(user.id)
...
}
我的解决方案包括使用 Pair 传播我在过滤器中需要的信息的聚合:
users.flatMap { user ->
departMentService.getByUserId(user.id)
.map { Pair(user, it) }
}.filter { it.second == null || it.second.departmentName != "HR" }