如何在Flux的onComplete执行后返回一个Mono?

我正在尝试保存一组类别。当所有类别都保存后,将产品的类别设置为它。然后返回Product。到目前为止,我已经成功地做到了这一点。

public Mono<Product> save(Product product) {
    final Set<Category> categories = product.getCategories();
    Set<Category> _categorySet = new HashSet<>();
    Mono<Product> _product;
    for (Category category : categories) {
        final Mono<Category> save = categoryService.save(category);
        save.subscribe(_categorySet::add,null,()->{
            product.setCategories(_categorySet);
            repository.save(product);
        });
    }
}

如何在保存产品后返回产品,而不依赖 block()? 我似乎找不到学习这些东西的来源。谁能给我指出好的材料。

解决方案:

不要手动封堵webflux链,尝试使用这段代码。

public Mono<Product> save(Product product) {

    final Set<Category> categories = product.getCategories();
    return Flux.fromIterable(categories)
            .flatMap(categoryService::save)
            .collect(Collectors.toSet())
            .flatMap(categorySet -> { // use `flatMap` if repository.save(product); returns `Mono<Product>`. or else use `map` if repository.save(product); returns `Product`
                product.setCategories(categorySet);
                return repository.save(product);
            });
}

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在过滤器中使用str_detect和&的短手。

2022-4-22 3:00:11

解决方案

翩翩起舞 我怎么能连续异化一个图标呢?

2022-4-22 3:00:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索