首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从存储库中更新Webflux对象并将其保存回

如何从存储库中更新Webflux对象并将其保存回
EN

Stack Overflow用户
提问于 2022-07-20 07:47:54
回答 1查看 144关注 0票数 0

我希望1)从我的存储库中获取一个对象,2)更新该对象,然后3)保存它。

我已经做了前两件事:

代码语言:javascript
复制
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()打电话,但也很难闻。

那么,有人能显示最后一行应该是什么来将我更新的对象保存回存储库中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-20 09:01:19

问题是,为了保存对象,我们需要使用.flatMap,而不仅仅是.map。因为.map只是转换元素,.flatMap将它们转换为新的发布服务器https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73047797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档