spring5 webflux,如何return自定义json数据?

spring5 webflux, how to return custom json data?

当我不使用 webflux 时,我的代码

1.public Map<String, Object> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status":1);
    userRepository.save(user);
    return map;

当我使用webflux时,我的代码

2.public Mono<Map<String, Object>> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status", 1);
    userRepository.save(user);
    return Mono.just(map);
}

和 2. 响应是“{"status":1}”,但用户不插入 mongo

在webflux中无法得到与1.response相同的结果,怎么办?

我不想 return 用户,只是 return 我自定义地图,然后用户插入 mongodb

您必须订阅 Mono,userRepository.save(obj).subscribe()

假设您的用户存储库 return 类型也是 Mono,并且您想 return 您的自定义地图,您可以这样做

public Mono<Map<String, Object>> registerService(User user) {
    return userRepository.save(user)
        .map(__ -> {
            Map<String, Object> map = new HashMap<>();
            map.put("status", 1);
            return map;
        });
}

在上面的代码中,您并没有破坏反应链,但是您return按照您想要的方式创建您的自定义地图。