[SPRING] 스프링 데이터 mongodb 및 kotlin을 사용하여 개체를 업데이트하는 중입니다.
SPRING스프링 데이터 mongodb 및 kotlin을 사용하여 개체를 업데이트하는 중입니다.
다음 요청 처리기가 있습니다.
fun x(req: ServerRequest) = req.toMono()
.flatMap {
...
val oldest = myRepository.findOldest(...) // this is the object I want to modify
...
val v= anotherMongoReactiveRepository.save(Y(...)) // this saves successfully
myRepository.save(oldest.copy(
remaining = (oldest.remaining - 1)
)) // this is not saved
ok().body(...)
}
그리고 다음의 mongodb reactive 저장소
@Repository
interface MyRepository : ReactiveMongoRepository<X, String>, ... {
}
문제는 save () 메서드를 실행 한 후에도 객체에 아무런 변화가 없다는 것입니다. save (). block ()으로 문제를 해결할 수 있었지만 왜 다른 저장소의 첫 번째 저장이 작동하는지 알 수 없습니다. 이 블록 ()이 필요한 이유는 무엇입니까?
해결법
-
==============================
1.누군가가 반응적인 게시자를 구독 할 때까지는 아무 일도 일어나지 않습니다. 그것이 block ()을 사용할 때 작동하기 시작한 이유입니다. DB에 대한 호출을하고 map (), flatMap ()과 같은 Mono / Flux 연산자를 사용하는 것보다 다른 DB 요청에서 결과를 사용해야하는 경우 필요한 모든 작업과 그 결과로 얻은 결과의 파이프 라인을 작성해야합니다 컨트롤러의 응답으로 모노 / 플럭스. Spring은 해당 Mono / Flux에 가입하고 요청을 반환합니다. 차단할 필요가 없습니다. 그리고 block () 메소드를 사용하는 것은 권장하지 않습니다.
누군가가 반응적인 게시자를 구독 할 때까지는 아무 일도 일어나지 않습니다. 그것이 block ()을 사용할 때 작동하기 시작한 이유입니다. DB에 대한 호출을하고 map (), flatMap ()과 같은 Mono / Flux 연산자를 사용하는 것보다 다른 DB 요청에서 결과를 사용해야하는 경우 필요한 모든 작업과 그 결과로 얻은 결과의 파이프 라인을 작성해야합니다 컨트롤러의 응답으로 모노 / 플럭스. Spring은 해당 Mono / Flux에 가입하고 요청을 반환합니다. 차단할 필요가 없습니다. 그리고 block () 메소드를 사용하는 것은 권장하지 않습니다.
Java에서 MongoDB reactive 리포지토리를 사용하는 간단한 예제 :
@GetMapping("/users") public Mono<User> getPopulation() { return userRepository.findOldest() .flatMap(user -> { // process the response from DB user.setTheOldest(true); return userRepository.save(user); }) .map(user -> {...}); // another processing }
from https://stackoverflow.com/questions/49151066/updating-object-with-spring-data-mongodb-and-kotlin-is-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 데이터를 느슨하게로드할지 여부 지정하기 (0) | 2019.02.20 |
---|---|
[SPRING] 원격 PropertySource (0) | 2019.02.20 |
[SPRING] Spring MVC를 사용하여 서버 디렉토리에 파일 업로드 (0) | 2019.02.20 |
[SPRING] 대량 할당 문제를 해결하는 방법 : 불안정한 바인더 구성 (API Abuse, Structural) in java (0) | 2019.02.20 |
[SPRING] Spring이 디버그 정보없이 매개 변수 이름을 얻는 방법 (0) | 2019.02.20 |