SpringWebFlux Mono<T> 如何获取返回 id

2022-01-14 18:31:40 +08:00
 aoscici

@PostMapping
void post(@RequestBody Book book) {
    Mono<Book> insert = reactiveMongoTemplate.insert(book);
    String insertId = 
    response.sendRedirect(url + insertId);
}

1730 次点击
所在节点    Java
5 条回复
yazinnnn
2022-01-14 20:40:27 +08:00
返回的 mono 里不是带着吗。。。
mono.doOnNext{book-> book.id}
Wien
2022-01-14 21:06:53 +08:00
你没理解 Reactive 的意义啊,只有当 Mono 被 subscribe 了才会开始执行,如果是 WebFlux 可以直接用 return insert.map(book -> {return url + book.id}) 返回 map 后的 Mono 。这样才能被调用方以 Reactive 的方式获取到。

如果返回的是非 Mono 、Flux 对象,那为啥用 Reactive 和 WebFlux 呢。
aoscici
2022-01-14 21:54:33 +08:00
@Wien 哎, 确实不太理解这东西, 临时接手别人的东西
yazinnnn
2022-01-14 22:10:22 +08:00
@aoscici
可以看看 java9 之后的 Flow 提供的接口文档,再看一下 https://www.reactive-streams.org/ 提供的增强接口,jvm 的几种 reactive 实现大差不差
aoscici
2022-01-14 22:48:04 +08:00
@yazinnnn 谢谢, 看起来周末要没了. 再想请教一下他使用这个 reactive 的话, 是不是在同一个任务里都得用才有意义? 打个比方说这个例子中插入了一条数据, 我想要拿到这个返回 id, 再用这个 id 作为 elastic 的索引 id 的话, elastic 也得使用同类接口?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX