我有带有字符串值的反应堆通量,我迭代每个值并检查数据库中是否存在给定值。 我想迭代每个值,直到在数据库中找到该值。 如果没有找到(在所有迭代之后)我想返回 Mono 空。 现在,即使我的 alldogs Flux 包含 3 个值,我也会在一次迭代后将 Mono 清空。
信息:我将狗名称放入反应器上下文中,因为它由存储库使用。
这是我的函数的代码块:
return myService.getAllDogs()
.flatMap(dogName -> Mono.deferContextual(Mono::just)
.contextWrite(ctx -> ctx.put(DOG_KEY, dogName))
)
.then(dogReactRepo.findByName(name))
根据您的解释,应该是:
return myService.getAllDogs()
.flatMap(dogReactRepo::findByName, 1)
.next()
因为
flatMap
并行进行多个订阅,所以最好通过设置 1
并发来限制它,因为您始终知道您不需要更多订阅。否则你可以跳过它,尽管它可能会导致不必要的查询。