В моем репозитории Spring реализована функция, которая возвращает kotlinx.coroutines.flow.Flow пользователя, но кажется, что этот поток всегда пуст, даже если в моей БД есть какая-то запись.
Я использую Spring Boot2.2.0-SNAPSHOT с поддержкой сопрограмм Kotlin.Я создал два метода в своем хранилище: один для создания пользователя и один для вывода списка всех пользователей.Тот, кто создает пользователя, работает, и я могу видеть этого пользователя в моей БД.Второй список существующих пользователей возвращает пустой список, всегда, даже если в моей БД есть какие-то записи.
Я использую Docker-экземпляр PostGres 10.1 рядом с моим приложением Spring.
ПолныйПроект доступен на github: https://github.com/kizux/demo-spring-webflux-kotlin
Вот реализация метода моего репозитория:
src / main / kotlin / fr / kizux / kotlindemocoroutines / repository / UserRepository.kt
fun findAll(): Flow<User> = dbClient.select().from(TABLE_USER_NAME).asType<User>().fetch().flow()
Возвращается этим обработчиком: src / main / kotlin / fr / kizux / kotlindemocoroutines / handler / UserHandler.kt
suspend fun getAll(req: ServerRequest): ServerResponse = ServerResponse.ok().bodyAndAwait(userRepo.findAll())
И направляется по адресу: src / main / kotlin / fr / kizux/kotlindemocoroutines/configuration/RouterConfig.kt
@Bean
fun userRoutes(userHandler: UserHandler) = coRouter {
"/user".nest {
GET("", userHandler::getAll)
POST("", userHandler::create)
}
}
Я также пытался добавить журнал при запуске моего приложения: src / main / kotlin / fr / kizux / kotlindemocoroutines / KotlinDemoCoroutinesApplication.kt
1022 *
В настоящее время единственное возвращение, которое я получил, это пустой объект json:
http://localhost:8080/user - HTTP 200 = {}
Я думаю, мне следует получить еще что-то вроде:
http://localhost:8080/user - HTTP 200 = {"id": 1, "email ":" j@hn.doe "," signInDate ":" что угодно "}