我想根据模型名称创建一个新集合。如果存在具有相同名称的集合,则返回现有集合。如果不是,则返回新创建的集合。我正在使用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
答案 0 :(得分:1)
从javadoc,getCollection
实际上返回MongoCollection<Document>
,而不是Mono
。因此,将此调用包含在Mono.just(reactiveMongoOperations.getCollection(modelName))
中即可。