响应式调用中,当Order的truckID为空时如何返回空DriverDto?
解决方案
你可以通过在flatMap操作符中加入条件判断,结合Mono.just()返回空的DriverDto对象来实现需求。具体实现代码如下:
Mono<OrderPublicDto> order = orderWebClient.getOrderById(orderID, bearerToken); Mono<DriverDto> driver = order.flatMap(o -> { // 判断OrderPublicDto的truckID是否为null if (o.getTruckID() == null) { // 返回空的DriverDto实例 return Mono.just(new DriverDto()); } else { // truckID不为null时,正常调用获取Driver的接口 return vehicleWebClient.getDriverById(o.getDriverId(), bearerToken); } });
额外说明
- 如果你需要的“空DriverDto”是指无元素的Mono(即不返回任何对象),可以将
Mono.just(new DriverDto())替换为Mono.empty()。 - 想要更简洁的写法,也可以用三元表达式简化逻辑:
Mono<DriverDto> driver = order.flatMap(o -> o.getTruckID() == null ? Mono.just(new DriverDto()) : vehicleWebClient.getDriverById(o.getDriverId(), bearerToken) );
内容的提问来源于stack exchange,提问作者Alex Grimaldo
相关产品推荐
相关产品推荐

