在 Spring Boot 中迭代 Flux 并与 Mono 连接

Iterate Flux and concat with Mono in Spring Boot

我确实有一个 fetchEmployment() 方法可以成功获取记录,我正在迭代它以获取 Mono 对象,该对象基于成功 returns 对象,但我无法创建最终的 Flux,它应该由 WorkerDTO 组成(WorkerDTO 列表 用于正常的 Spring 引导应用程序)但它 returns 空对象,即 [].

@Override
public Flux<WorkerDTO> method() {
    Flux<EmployeeDTO> employmentDTOFlux = fetchEmployment();
    Flux<WorkerDTO> workerDTOFlux = Flux.empty();

    employmentDTOFlux.flatMap(employmentDTO -> {
        Mono<WorkerDTO> worker = workerService.findWorkerById(employmentDTO.getWorkerId());
        return Flux.concat(workerDTOFlux, Flux.from(worker));
    });

    return workerDTOFlux;
}

我认为您可以将其重写为如下简单的内容:

return fetchEmployment()
       .map(EmployeeDTO::getWorkerId)
       .flatMap(workerService::findWorkerById);

以下更简单,应该可以正常工作:

@Override
public Flux<WorkerDTO> method() {
    return fetchEmployment().flatMap(employmentDTO -> {
        workerService.findWorkerById(employmentDTO.getWorkerId());
    });
}