代码之家  ›  专栏  ›  技术社区  ›  Erdem Aydemir

Reactor,按值返回的布尔对象

  •  0
  • Erdem Aydemir  · 技术社区  · 6 年前

    我想基于模型名称创建一个新集合。如果存在同名集合,则返回现有集合。否则,新创建的集合将返回。我正在使用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>)是 DBCollectionFactory错误。java/src/main/java/com/jagger/obls/factory/DBCollectionFactory。爪哇:26

    错误不兼容类型:无法推断类型变量R
    (参数不匹配;lambda表达式中的返回类型错误 键入条件表达式
    通用域名格式。mongodb。反应流。客户MongoCollection公司 无法转换为反应器。果心出版商Mono)DBCollectionFactory。java/src/main/java/com/jagger/obls/factory/DBCollectionFactory。爪哇:26

    1 回复  |  直到 6 年前
        1
  •  1
  •   Simon Baslé    6 年前

    从javadoc, getCollection 实际返回 MongoCollection<Document> ,不是 Mono 是的。所以把这个电话包装成 Mono.just(reactiveMongoOperations.getCollection(modelName)) 应该这样做。