我希望1)从我的存储库中获取一个对象,2)更新该对象,然后3)保存它。
我已经做了前两件事:
fun updateUniversity(id: ObjectId,
newName: String,
newCity: String,
newYearOfFoundation: Int): Mono<University> {
return universityRepository
.findById(id)
.switchIfEmpty(Mono.error(NoSuchElementException()))
.map {
if (newCity.isNotEmpty()) it.city = newCity
if (newName.isNotEmpty()) it.name = newName
if (newYearOfFoundation != -1) it.yearOfFoundation = newYearOfFoundation
return@map it
}
}但我救不了结果。如果我试图通过map .map{ universityRepository.save(it) }保存我的对象,我会得到一个错误类型不匹配,因为它在Mono中返回Mono。
.then{ universityRepository.save(it) }也不是我的情况,因为我需要在保存函数中传递一个值(我没有)。
我可以给.block()打电话,但也很难闻。
那么,有人能显示最后一行应该是什么来将我更新的对象保存回存储库中吗?
发布于 2022-07-20 09:01:19
问题是,为了保存对象,我们需要使用.flatMap,而不仅仅是.map。因为.map只是转换元素,.flatMap将它们转换为新的发布服务器。https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html
https://stackoverflow.com/questions/73047797
复制相似问题