반응형
굉장히 어이없는 실수였지만 같은 이슈로 고생하시는 분이 계실까 공유합니다.
ReactiveCrudRepository
를 학습할 때 발생할 수 있는 이슈입니다.
필자는 webflux
와 ReactiveMongoRepository
를 이용하여 간단한 게시판 예제를 만들어 보고자 했습니다.
입력까지는 잘 되었으나 Delete가 되지 않는 이슈가 발생하였습니다.
코드는 아래와 같습니다.
보고 무엇이 문제인지 아시는 분은 뒤로가기를 클릭하셔도 됩니다.
suspend fun delete(deleteRequest: ReplyDeleteRequest) {
val replyId = ObjectId(deleteRequest.replyId)
val requestId = deleteRequest.requestId
Mono.just(replyId)
.flatMap { replyRepository.findById(replyId) }
.map {
if(it.writerId == requestId) {
replyRepository.delete(it)
} else {
throw NotPermissionException("작성자만 삭제할 수 있습니다.")
}
}.awaitFirst()
}
삭제가 되지 않는 이유는 바로 subscribe
를 하지 않아서입니다.
Publisher
는 구독을 하지 않으면 작업을 실행하지 않는 특성을 가지고 있기때문입니다.
코드를 아래와 같이 변경하면 정상적으로 동작합니다.
suspend fun delete(deleteRequest: ReplyDeleteRequest) {
val replyId = ObjectId(deleteRequest.replyId)
val requestId = deleteRequest.requestId
val result = Mono.just(replyId)
.flatMap { replyRepository.findById(replyId) }
.map {
if(it.writerId == requestId) {
replyRepository.delete(it)
} else {
throw NotPermissionException("작성자만 삭제할 수 있습니다.")
}
}
.awaitFirst()
.subscribe()
}
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] Kotlin 을 이용하여 MongoDB Query를 Type-safe 하게 작성하기 (0) | 2021.07.30 |
---|---|
[Spring] Interceptor postHandle이 동작을 안해요. (1) | 2021.07.02 |
[Spring] @ContextConfiguration with Kotlin (0) | 2021.04.29 |
[Spring data mongodb] 몽고DB에서 시퀀스를 이용하기 (0) | 2021.04.29 |
[Querydsl] SemanticException: right-hand operand of a binary operator was null (0) | 2021.04.12 |
댓글