将值从Mono / Flux传递给方法

dezerb:

我是反应式编程概念的新手。我正在遵循“学习Spring Boot 2.0”,并且所描述的简单概念/示例是可以理解的。但是我不知道如何在更复杂的用例中使用Mono / Flux。带有弹簧靴,mongo和项目反应堆的一些示例

我的模特

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);
};

但是,如果我稍稍更改模型以按实体ID存储所有者,那么按所有者检索评论并不是那么容易

Comment
@Id
private ObjectId _id;
private String content;
private String ownerId;

我的意图是使Rest Controller易于最终用户使用,并首先通过登录找到用户实体,如果存在,则所有用户评论

@GetMapping(params = "login")
@ResponseBody
public Flux<Comment> getAllCommentsByLogin(@RequestParam("login") String login) {
    return commentRepository.findByOwnerId(userRepository.findByLogin(login).map(user2 -> user2.getId())
};

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

Artem Bilan:

希望您的userRepository.findByLogin()回报Mono<User>,然后代码应如下所示:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章