繁体   English   中英

Java Spring Webflux - 插入一个空的 Mono 过滤器的结果?

[英]Java Spring Webflux - inserting an empty Mono result of a filter?

请提出一个小问题:将空的 Mono 保存是否有意义,我的意思是 Mono 上的过滤器的结果,请保存到反应式数据库中?

一个小样本:

        // step 1 - from some Mono, compute my pojo
        final Mono<MyPojo> myPojoMono = getSomeMonoAndConvertToMyPojo();

        // step 2 - based on a predicate, some myPojo are invalid, I do not want to save them, but some are valid, I need to persist them!
        final Mono<MyPojo> validMyPojoMono = myPojoMono.filter(oneMyPojo -> computeIsValidMyPojo(oneMyPojo));

        // step 3 - for those who are valid only, I want to persist them. BTW, should I use something else other than .insert(Publisher) which strangely, returns a flux?
        final Flux<PdsResponse> whyFlux  = myReactiveRepository.insert(validMyPojoMono);
        return whyFlux;

在第 2 步之后,如果谓词不匹配,(不确定)结果将为空 mono。

因此,请在空的 mono 上调用持久性 API 是否有意义?

请问实现这个用例的适当方法是什么?

谢谢

你的代码有点同步,我不确定它是否有意义。

我会这样做

final Mono<MyPojo> myPojoMono = getSomeMonoAndConvertToMyPojo()
    .filter(oneMyPojo -> computeIsValidMyPojo(oneMyPojo));
    .flatMap(validMyPojoMono-> reactiveRepository.insert(validMyPojoMono));

关键是,如果filter后你得到空的 mono 那么它不会持续存在,这对我来说是有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM