filterWhen 和 hasElement 的否定

Negation of filterWhen and hasElement

我正在学习 Flux 和 Mono,但在尝试检查 redis 中是否不存在键时遇到了困难。我需要过滤我的助焊剂,如果键存在,我想删除该元素。我在文档中找不到执行此操作的方法,如果密钥存在,我所能过滤的就是保留。我需要相反的东西。

client.request(MWS_EU, Orders, ordersRequest, ListOrdersResponse.class)
    .flatMapIterable(listOrdersResponse -> listOrdersResponse.getOrders())
    .filterWhen(order -> isNewOrder(order.getOrderId()))
    .flatMap(...)

并检查 redis:

private Mono<Boolean> isNewOrder(String orderId) {
    return redisOrders.opsForValue().get(orderId).hasElement();
} 

过滤我的 Flux 以仅在键不存在时保留元素的干净方法是什么?

我不想使用 block()

您可以将方法更改为以下内容:

private Mono<Boolean> isNewOrder(String orderId) {
    return redisOrders.opsForValue().get(orderId).hasElement().map(b -> !b);
} 

通过使用 map() 方法,您可以反转 hasElement() 返回的值。