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按照您想要的方式创建您的自定义地图。
当我不使用 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按照您想要的方式创建您的自定义地图。