【发布时间】:2021-10-07 16:47:51
【问题描述】:
我知道 Flux 对象上有一个名为“hasElements”的函数。但它的行为有点奇怪!
Flux<RoomBO> rooms=serverRequest.bodyToMono(PageBO.class).flatMapMany(roomRepository::getRooms);
return rooms.hasElements().flatMap(aBool -> aBool?ServerResponse.ok().body(rooms,RoomBO.class):ServerResponse.badRequest().build());
return ServerResponse.ok().body(rooms,RoomBO.class)
当flux对象不为空时,第二个return语句可以返回我需要的正确的东西,但是第一个return语句只返回一个空数组,类似于json中的“[]”。我不知道为什么会这样发生了!我使用相同的数据进行测试。唯一的区别是我在第一种情况下调用了hasElements函数。但是当flux对象为空时,我需要返回badRequest。 hasElements 函数似乎让我的通量对象为空,尽管我知道它实际上并没有这样做。
【问题讨论】:
-
好吧,我想既然从flux对象中取出数据就知道它是否为空了,flux对象就变成了空的。我可以使用 collect() 来利用通量对象的元素,同时我可以知道元素的数量。但是当数据很大时这会花费很多,而且对于知道我的通量对象是否为空的要求来说似乎很愚蠢!