【问题标题】:Adding to each element of a Flux a List attribute obtained from a MongoDB reactive query向 Flux 的每个元素添加从 MongoDB 反应式查询获得的 List 属性
【发布时间】:2020-04-03 15:25:21
【问题描述】:

第一次发帖,我在 Spring 中学习响应式流,遇到了以下问题。

我有一个用于 Workspace 类的 mongo 存储库和另一个用于 Model 类的存储库。

当我查询所有工作区时,我得到了一个 Flux,我希望将这个 Flux 中的每个元素转换为一个名为 WorkspaceDTO 的新类,并对 modelsRepository 进行查询以检索具有属性的所有模型workspaceName 等于我的工作区名称,将此结果添加到 WorkspaceDTO 的属性中,即 List

我一直在尝试一些东西,但还没有想出办法,有什么建议吗?

【问题讨论】:

    标签: mongodb mono flux reactive


    【解决方案1】:

    终于用这段代码做到了:

     Flux<Workspace> workspaces = repository.findAll();
    
            return workspaces
                    .map(ws -> {
                        Mono<List<Model>> workspaceModels = modelRepository.findByWorkspaceName(ws.getName()).collectList();
                        return Mono.zip(Mono.just(ws),workspaceModels)
                                .map(t -> new WorkspaceDTO(t.getT1(),t.getT2()));
    
                    })
                    .flatMap(Flux::concat) //This operation transform a Flux<Mono<WorkspaceDTO>> into Flux<WorkspaceDTO>
                    .log();
    
    
    

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 2016-04-23
      • 2020-11-22
      • 2020-07-30
      • 2021-08-05
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多