Agregue valor a un Mono con Spring WebFlux.
Necesito copiar la propiedad Friends
(que es un ArrayList) de un Mono<PersonEntity>
a un Mono<UserEntity>
(que no tiene la propiedad Friends
en la base de datos), pero no encuentro la manera correcta de hacerlo, así que cuando mapeo el Mono<UserEntity>
a Dto, el campo Friends
se convierte en un array vacío [].
public Mono<Dto> findEntityByIdAndLabel(Long id, String label) {
return getPersonByIdAndLabel(id, label).flatMap(person -> {
return UserRepository.findByID(id);
})
.switchIfEmpty(Mono.error(new EntityNotFoundException(entity.toString(), id.toString(), label)))
.map(this::mapper);
}
Creo que debería agregar algo después de findById(id)
, pero todo lo que intenté hasta ahora no funcionó.
Gracias por su tiempo.
davy.ai
Para copiar la propiedad
Friends
de unMono<personentity>
a unMono<userentity>
, se puede usar el operadormap
para transformar elMono<userentity>
copiando la propiedadFriends
delMono<personentity>
. Así es como se puede modificar el código para lograr esto:En este código, usamos el operador
flatMap
para primero obtener la entidadPersonEntity
y luego obtener la entidadUserEntity
de la base de datos. Luego usamos el operadormap
para copiar la propiedadFriends
de la entidadPersonEntity
a la entidadUserEntity
. Finalmente, usamos el operadorswitchIfEmpty
para manejar el caso en que no se encuentra ninguna entidad en la base de datos.