当前位置: 首页 > 知识库问答 >
问题:

Java被动获取ServerRequest主体,运行存储库并返回flux

方航
2023-03-14

我试图从服务器请求中获取HttpRequest主体中的“用户”主体。我使用路由器功能来实现这一点。这个“用户”键包含用户列表。

之后,我需要提取这个用户列表,从存储库中获取流量,然后返回前端。我怎样才能做到这一点?

@Repository
public interface UserRepository extends ReactiveCrudRepository<User, Integer> {
    Flux<Account> findByUserIn(List userList);
}

如何修改下面的代码使其工作?

    public Mono<ServerResponse> getUserList(ServerRequest request) {

        Flux<User> users = request.bodyToMono(String.class).doOnSuccess(x -> {
            JSONObject jObject = new JSONObject(x);
            List userList= jObject.getJSONArray("users").toList();
            userRepository.findByUserIn(userList);
        })
        return ServerResponse.ok().body(users, Repo.class);
    }

共有1个答案

程冥夜
2023-03-14

我找到了答案,因为几个拼写错误而卡住了,多亏Toerktumlare指出了答案。我需要使用flatMapMany。

public Mono<ServerResponse> getUserList(ServerRequest request) {

    Flux<User> results = request.bodyToMono(String.class)
            .flatMapMany(x -> {
                JSONObject req = new JSONObject(x);
                List userList = req.getJSONArray("users").toList();
                return userRepository.findByUserIn(userList);
            });
    return ServerResponse.ok().body(results, User.class);
}
 类似资料:
  • 此示例存储库有一个方法 现在不需要使用Robolectric来单元测试了吗?

  • 假设我们有一个带有自定义方法的Spring数据存储库接口... 此方法只是设置实体的 deletedAt 字段,ok。有没有办法允许此方法返回 的更新版本? 明显地 …不起作用,因为… java.lang.IllegalArgumentException:修改查询只能使用void或int/Integer作为返回类型! 安宁是否知道另一种轻松允许这种情况的方法,当然除了明显的“在存储库和调用者之间添

  • 问题内容: 有没有人知道您是否可以在Maven存储库中找到源JAR? 问题答案: Maven Micro-Tip:获取源代码和Javadocs 在IDE中使用Maven时,经常会发现IDE需要解析库依赖项的源代码和Javadocs。有一个简单的方法可以实现该目标。 第一个命令将尝试下载pom文件中每个依赖项的源代码。 第二个命令将尝试下载Javadocs。 Maven受这里的图书馆打包人员的摆布。

  • 本文向大家介绍Python中执行存储过程及获取存储过程返回值的方法,包括了Python中执行存储过程及获取存储过程返回值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: 1. 使用adodbapi 2. 使用pymssq

  • [警告]:提供的主机列表为空,只有本地主机可用 剧本:site.yml L[警告]:无法匹配提供的主机模式,忽略:mymac1 你能建议我如何将任何主机传递到我的playbook,而不必维护和存储所有主机信息的主机资源库吗 我在ansible 2.3.1.0版本上

  • 问题内容: 我已经使用过返回一定数量的行。我的代码是这样的: 有没有什么方法可以检查返回的行数?还是我必须自己写? 问题答案: 您可以使用循环而不是循环,以便在执行循环后调用该循环,如下所示: 或自己计算行数: