spring-boot - Springboot webflux reactor 从 mongoDB 中删除项目
问题描述
我使用springboot + mongodb,我是webflux的初学者。我为 CRUD 编写代码。当我在控制器中访问删除 ID 时,代码不起作用,因为计数总是返回 0。有人帮我吗?
@ApiOperation(value = "Delete multi cities")
@DeleteMapping
public Mono<ResponseEntity<AtomicInteger>> deleteByIds(@RequestBody @NotNull Set<String> ids) {
AtomicInteger count = new AtomicInteger(0);
Flux.fromIterable(ids)
.flatMap((id) -> {
return cityService.findById(id)
.flatMap((c) -> {
count.getAndAdd(1);
return cityService.deleteById(c.getId());
});
});
log.debug("count = {}", count);
return Mono.just(ResponseEntity.ok(count));
}
解决方案
Flux 没有被订阅,你应该像这样尝试
return Flux.fromIterable(ids)
.flatMap((id) -> {
return cityService.findById(id)
.flatMap((c) -> {
count.getAndAdd(1);
return cityService.deleteById(c.getId());
});
})
.then(Mono.defer(() -> {
log.debug("count = {}", count);
return Mono.just(ResponseEntity.ok(count));
}));
推荐阅读
- python - 根据python中的条件创建值列表
- python - 快速文本使用(开始比较词向量)
- c++ - c++绑定成功,lambda SEGV
- javascript - 使用 JavaScript 在 HTML 中操作函数的一部分
- javascript - name='AdjustmentBuyerPrice' 的无效表单控件不可聚焦
- html - 切出身体的形状
- html - Flex 1:高度不固定到剩余空间
- java - Spring不适用于黄瓜@ScenarioScope(IllegalStateException:没有为范围名称'cucumber-glue'注册范围)
- javascript - 为 iOS 13+ 动态切换到移动站点
- html - 表单嵌套的 Json Html 和 Angular