Reactor,Boolean by value返回的对象

时间:2018-01-20 19:05:21

标签: spring-boot spring-data spring-data-mongodb project-reactor

我想根据模型名称创建一个新集合。如果存在具有相同名称的集合,则返回现有集合。如果不是,则返回新创建的集合。我正在使用ReactiveCrudRepository。我很反应。我在底层代码中遇到此错误。我该怎么办?

public Mono<MongoCollection<Document>> constructDBCollection(String modelName) {
        return reactiveMongoOperations.collectionExists(modelName)
                .flatMap(exists -> exists ? reactiveMongoOperations.getCollection(modelName) : reactiveMongoOperations.createCollection(modelName, CollectionOptions.empty()
                .size(1024 * 1024)
                .capped()));
    }
  

错误flatMap的类型(java.util.function.Function&gt;)是   错误的DBCollectionFactory.java /src/main/java/com/jagger/obls/factory/DBCollectionFactory.java:26

     

错误不兼容类型:无法推断类型变量R
  (参数不匹配; lambda表达式中的错误返回类型不好   输入条件表达式
  com.mongodb.reactivestreams.client.MongoCollection   无法转换为reactor.core.publisher.Mono)DBCollectionFactory.java /src/main/java/com/jagger/obls/factory/DBCollectionFactory.java:26

1 个答案:

答案 0 :(得分:1)

从javadoc,getCollection实际上返回MongoCollection<Document>,而不是Mono。因此,将此调用包含在Mono.just(reactiveMongoOperations.getCollection(modelName))中即可。