gpt4 book ai didi

java - 将值从 Mono/Flux 传递到方法

转载 作者:行者123 更新时间:2023-11-30 01:57:43 25 4
gpt4 key购买 nike

我对响应式(Reactive)编程概念不熟悉。我正在关注“学习 Spring Boot 2.0”,所描述的简单概念/示例是可以理解的。但我不知道如何在更复杂的用例中使用 Mono/Flux。Spring Boot、mongo 和项目 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);
};

但是,如果我稍微更改模型以通过实体 ID 存储所有者,则检索所有者的评论就不那么容易了

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

我的目的是让最终用户易于使用其余 Controller ,并首先通过登录找到用户实体,如果存在所有用户评论

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

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

最佳答案

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

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

关于java - 将值从 Mono/Flux 传递到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53835201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com