Java 将值从Mono/Flux传递到方法

Java 将值从Mono/Flux传递到方法,java,mongodb,reactive-programming,reactor,Java,Mongodb,Reactive Programming,Reactor,我不熟悉反应式编程的概念。我正在学习“Learning Spring Boot 2.0”,所描述的简单概念/示例是可以理解的。但我不知道如何在更复杂的用例中使用Mono/Flux。 spring boot、mongo和project reactor的一些示例 我的模型 User @Id private String id; private String login; Comment @Id private ObjectId _id; private String content; privat

我不熟悉反应式编程的概念。我正在学习“Learning Spring Boot 2.0”,所描述的简单概念/示例是可以理解的。但我不知道如何在更复杂的用例中使用Mono/Flux。 spring boot、mongo和project reactor的一些示例

我的模型

User
@Id
private String id;
private String login;

Comment
@Id
private ObjectId _id;
private String content;
private String ownerLogin;
因此,这个简单的示例可以让所有者提供评论,效果很好

@GetMapping(params = "login")
@ResponseBody
public Flux<Comment> getAllCommentsByLogin(@RequestParam("login") String login) {
    return commentRepository.findByOwnerLogin(login);
};
我的目的是使rest控制器易于最终用户使用,首先通过登录和所有用户注释(如果存在)找到用户实体

@GetMapping(params = "login")
@ResponseBody
public Flux<Comment> getAllCommentsByLogin(@RequestParam("login") String login) {
    return commentRepository.findByOwnerId(userRepository.findByLogin(login).map(user2 -> user2.getId())
};
@GetMapping(params=“login”)
@应答器
公共流量getAllCommentsByLogin(@RequestParam(“登录”)字符串登录){
返回commentRepository.findByOwnerId(userRepository.findByLogin(login.map)(user2->user2.getId())
};

这个解决方案显然是错误的,但我不知道整个方法是错误的还是只有这个方法。

希望您的
userRepository.findByLogin()
返回
Mono
,那么代码应该是这样的:

return userRepository.findByLogin(login)
               .flatMapMany(user -> commentRepository.findByOwnerId(user.getId()));

是的
userRepository
返回
Mono
。而您的代码正是我想要的。
return userRepository.findByLogin(login)
               .flatMapMany(user -> commentRepository.findByOwnerId(user.getId()));