英文:
Reactive Spring demanding return after flatMap
问题
我在使用IDE时遇到了一个错误,提示“缺少返回语句”,尽管我真的想在flatMap之后加一个“then”。
repository.findById返回一个Flux<SomeObject>。
setParent是一个bean更新操作。
repository.save来自ReactiveCrudRepository:<S extends T> Mono<S> save(S entity)。
为什么要求我加上一个返回语句?为什么我不能在这之后使用then()呢?
```java
private Mono<Void> runThreeThings(Batch batch) {
return repository.findById(batch.getId())
.flatMap(doc -> {
doc.setParent(SOME_PARENT_ID);
return repository.save(doc);
}) // 这是我遇到“缺少返回语句”错误的地方。为什么呢?
}
英文:
I'm getting a IDE error of "Missing return statement" although I really want to put a "then" after the flatMap.
The repository.findById return a Flux<SomeObject>.
The setParent is a bean update.
The repository.save is from the ReactiveCrudRepository: <S extends T> Mono<S> save(S entity)
Why am I being asked for a return? Why can't I use a then() after this?
private Mono<Void> runThreeThings(Batch batch) {
return repository.findById(batch.getId())
.flapMap(doc -> {
doc.setParent(SOME_PARENT_ID);
repository.save(doc)
}) // <-- this is where I'm getting a "Missing return statement" error. Why?
}
答案1
得分: 2
因为flatmap
的参数是一个需要返回值的函数(该对象扩展自Mono
),
在您的情况下,您需要返回一个Mono
,解决方案如下。
private Mono<Void> runThreeThings(Batch batch) {
return repository.findById(batch.getId())
.flatMap(doc -> {
doc.setParent(SOME_PARENT_ID);
return repository.save(doc);
});
}
英文:
Because flatmap has as parameter a function that need a return (object extends Mono)
in your case you need to return a mono and solution will be.
private Mono<Void> runThreeThings(Batch batch) {
return repository.findById(batch.getId())
.flapMap(doc -> {
doc.setParent(SOME_PARENT_ID);
return repository.save(doc);
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论