我有一个文档列表,在对它们执行了一些进程之后,我需要将它们保存在mongoDB上。
我有一个React性的mongoDB依赖项,所以我想使用它。如果可能的话,我想避免使用另一个依赖项(非React性的)。第二个文档处理应该在第一个文档保存后开始。
Mono<List<Index>> deferredCreate = Mono.defer(() -> index
.flatMapMany(Flux::fromIterable)
.flatMapSequential(entity -> {
repository.process(entity).subscribe();
return entity;
})
)
.collectList());
与
public Mono<IndexDocument> process(Index index) {
if(someCondition) { return mongoOperations.save(index); }
else { return mongoOperations.findAndReplace(query, index); }
}
在这里,列表是按索引处理的,但是索引n+1处理在索引n开始之后开始,我需要它在n处理完成之后开始。我不能用.block()代替subscriber,否则我会出错(block不能用于并行流)。我尝试了concatMap,但是这是一样的。
有什么方法可以做到吗?我使用React式编程,因为这是需要React的更大过程的一部分。
1条答案
按热度按时间cbeh67ev1#
正如我在评论中提到的,你不应该明确
subscribe
,flatMapSequential
将在幕后订阅,并保留原来的订单