mongodb - react 性存储库不保存对象

标签 mongodb spring-boot kotlin reactive-programming spring-repositories

我想我不太了解Reactive存储库和使用它的处理程序的工作方式。我编写了一个特殊的测试类,仅用于使用存储库测试最简单的处理程序

 @SpringBootTest
 class TestRepository() {

   @Autowired
   lateinit var myRepo: myRepo

   @Autowired
   lateinit var myHandler: MyHandler

   @Test
    fun `save with a handler`() {
    val myObject = MyObject()
    myHandler.save(request).subscribe()

    StepVerifier.create (myRepository.count() ) <--this does not work
        .expectNext (1L )
        .expectComplete().verify()
   }

   @Test
   fun `test only database saving`() {
      val object = MyObject()

      myRepo.save(myRepo).subscribe()

      StepVerifier.create (myRepo.count() ) <-- this works
        .expectNext (1L )
        .expectComplete().verify()
   }
}

我的处理程序和存储库是通过以下方式定义的:
  @Service
  class MyHandler(private val myRepository: MyRepository) {

     fun save(object: MyObject): Mono<MyObject> {
       return myRepository.save(request)
     }
  }

  @Repository
  interface MyRepo : ReactiveMongoRepository<MyObject, String> {

    fun save(request: MyObject): Mono<MyObject>
  }

我也尝试使用subscribe方法,但仍然看不到结果。

我应该纠正什么?

最佳答案

使用Mono.then函数链接savecount函数并获得结果Mono:

@Test
fun `save with a handler`() {
  val countAfterSave = myHandler.save(MyObject()).then(myRepository.count());

  StepVerifier.create(countAfterSave)
    .expectNext(1L)
    .expectComplete()
    .verify()
}

关于mongodb - react 性存储库不保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037561/

相关文章:

java - 如何绑定(bind)带有文件输入的 HTML 表单和后端的 Spring RestController(无 JS)

kotlin - 存在Kotlin字符串,但不能使用几乎所有的字符串功能

mongodb - Mongo 查询问题 $gt,$lt

mongodb - 具有MongoDB镜像的docker-maven-plugin在启动时挂起

java - 如何消除orientdb中的死锁

java - 在具有多个数据源的 JBOSS 上部署应用程序时出现问题

android - 如何在 Jetpack 组合中使用 Viewmodel

android - 使用协程流时房间卡住->收集

mongodb - 如何使用 GraphQL 更新数据

mysql - 查询以查找表的行数