spring-webflux - Flux.any正确使用
问题描述
我有一个 Flux.fromIterable(list of ids) 。我想知道是否有任何记录为 null 。所以我正在尝试使用 Flux.any 但我发现我什至没有在任何内容中打印任何内容并直接转到 doOnEach ,因为结果输出为假。我们如何解决这个问题?解决方案不应仅限于空检查。它可以是任何布尔条件。
Mono<Boolean> isAnyNull =Flux.fromIterable(request.getIds())
.switchIfEmpty(Mono.error(new SomeException("No elements")))
.flatMap(id->{
return FooRepo.find(id);
}).any(p->{
System.out.println("check is any null p?."+p);
return ((p==null)||(p.getId()==null));
}).doOnEach(System.out::println);
我在下面尝试了一个奇怪的临时修复,但我不确定这是否正确。另外我认为它只适用于 null。
Mono<Boolean> isAnyNull = Flux.fromIterable(request.getds())
.switchIfEmpty(Mono.error(new SomeException("No elements")))
.flatMap(id -> {
return FooRepo.find(id);
})
.switchIfEmpty(Mono.error(new SomeException("INVALID_ID"))).hasElements()
.doOnEach(System.out::println);
更新:这也有效并使用流检查 null - 评论感谢改进
Flux.fromIterable(request.getIds())
.switchIfEmpty(Mono.error(new SomeException("No elements")))
.flatMap(id -> {
return FooRepo.find(id);
})
.any(foo -> {
return (Objects.nonNull(foo)||foo.getId()!=null);
}).doOnEach(System.out::println);
解决方案
推荐阅读
- html - 我的字体大小或文本字段大小的设置被忽略
- javascript - Formik - 在错误消息中使用大写首字母字段名称
- lua - 为什么函数l`ua_upvalueindex`的参数`n`可以是256?
- java - 标题后的空白行
- python-3.x - Python xmlsec XML 签名值不匹配
- c# - 遍历数组,在每次迭代时获取一个子集并存储到对象列表中
- elasticsearch - 如何提取具有 2 个或更多嵌套对象的文档?
- scala - Spark RDD vs Dataframe - 数据存储
- javascript - 从远程文件提供 mpeg 流
- opayo - 即使输入错误的挑战代码,3DS2 也能通过直接集成成功