首页 > 解决方案 > 返回插入记录的处理程序

问题描述

如果我在 spring 中使用响应式存储库(使用 kotlin)并且我想返回插入的记录。我该怎么做?我需要一个运算符来订阅 flatMap 返回的内容,然后将其传递给一个函数,以便我可以使用ok().body(fromObject(insertedRecord))

我尝试过的事情:

  1. then: 不返回值
  2. .subscribe { Mono.just(ServerResponse.ok().build()) }: 返回Disposable
@Component
class RecordHandler(private val repository: RecordRepository) {
    fun create(req: ServerRequest): Mono<ServerResponse> {
        return req.bodyToMono(RecordDTO::class.java)
                .flatMap { repository.insert(it.toDomain()) }
                .then(ok().build())
}

另一种选择是在插入后进行查询,但这是一种解决方法。

提前致谢

标签: springkotlinreactor

解决方案


这个怎么样:

 return req.bodyToMono(RecordDTO::class.java)
            .flatMap { repository.insert(it.toDomain()) }
            .flatMap { ok().body(fromObject(it)) }

?


推荐阅读