Cuando no uso webflux, mi código

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

Cuando usé webflux, mi código

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

Y 2. la respuesta es "{" status ": 1}", pero el usuario no inserta mongo

En webflux, no puedo obtener lo mismo que 1. respuesta, entonces, ¿cómo hacerlo?

No quiero devolver el usuario, solo devuelva el mapa personalizado y el usuario inserte en mongodb

2
Lce Man 15 oct. 2018 a las 19:31

2 respuestas

La mejor respuesta

Suponiendo que el tipo de retorno de su repositorio de usuario también sea Mono, y le gustaría devolver su mapa personalizado, podría hacerlo

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

En el código anterior, no está rompiendo la cadena reactiva, pero está devolviendo su mapa personalizado como deseaba.

1
eis 15 oct. 2018 a las 19:02

Tienes que suscribirte al Mono, userRepository.save(obj).subscribe().

-1
Adrian Elder 15 oct. 2018 a las 16:37