gpt4 book ai didi

带有空值的 Mono.zip

转载 作者:行者123 更新时间:2023-12-04 14:13:25 25 4
gpt4 key购买 nike

我的代码:

Mono.zip(
credentialService.getCredentials(connect.getACredentialsId()),
credentialService.getCredentials(connect.getBCredentialsId())
)
.flatMap(...
从前端我们得到 connect具有 2 个字段的对象:
connect{
aCredentialsId : UUID //required
bCredentialsId : UUID //optional
}
所以有时第二行 credentialService.getCredentials(connect.getBCredentialsId()))可以退货 Mono.empty当我的第二个字段 bCredentialsId 时如何编写代码来为这个空的 Mono 做好准备一片空白?
我该怎么办?如果为空值 return Mono.just(new Object)然后检查是否 obj.getValue != null ???我需要从数据库中获取 2 个不同值的数据

最佳答案

我在这里更喜欢的策略是声明一个 optional()像这样的实用方法:

public class Utils {

public static <T> Mono<Optional<T>> optional(Mono<T> in) {
return in.map(Optional::of).switchIfEmpty(Mono.just(Optional.empty()));
}

}
...然后允许您转换您的第二个 Mono到一个总是返回一个可选的,因此执行如下操作:
Mono.zip(
credentialService.getCredentials(connect.getACredentialsId()),
credentialService.getCredentials(connect.getBCredentialsId()).transform(Utils::optional)
).map(e -> new Connect(e.getT1(), e.getT2()))
(...假设您有一个 Connect 对象,它当然将 Optional 作为第二个参数。)

关于带有空值的 Mono.zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62517565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com