webflux возвращает список пустых объектов - PullRequest
0 голосов
/ 07 мая 2019

Я новичок в программировании на Spring. Я тестирую реактивное программирование с проектом Reactor / Webflux.

Регистрация базы данных работает хорошо через сообщение.

Но при каждом вызове API Get Mono или Flux я получаю список пустых объектов. Не могли бы вы дать мне решение?

Я инициировал проект через Spring boot / Maven в Kotlin и Mongo реактивной.

Спасибо за вашу помощь!

My UsersApplication

@SpringBootApplication
class UsersMsApplication

fun main(args: Array<String>) {
    runApplication<UsersMsApplication>(*args)
}

Моя модель:

@Document(collection = "user")
data class User(
                @Id
                private var id: String,
                @Field("name")
                private var name: String
                ) : Serializable

Мой репозиторий

@Repository
interface UserRepository : ReactiveMongoRepository<User, String>

My UserService

interface UserService {
    fun createUser(user: User): Mono<User>

    fun findAllUsers(): Flux<User>

    fun findOneById(id: String): Mono<User>
}

My UserServiceImpl

@Service
class UserServiceImpl(private val userRepository: UserRepository): UserService {
    override fun createUser(user: User): Mono<User> {
        return userRepository.save(user)
    }

    override fun findAllUsers(): Flux<User> {
        return userRepository.findAll()
    }

    override fun findOneById(id: String): Mono<User> {
        return userRepository.findById(id)
    }
}

Мой пользовательский ресурс

@RestController
@RequestMapping("/api")
class UserResource(private val userService: UserService) {

    @PostMapping("/users")
    fun addUser(@RequestBody user: User) : Mono<User> = userService.createUser(user)

    @GetMapping("/users")
    fun findAllUsers() : Flux<User> = userService.findAllUsers()

    @GetMapping("/users/{id}")
    fun getOneUser(@PathVariable id: String) : Mono<User> = userService.findOneById(id)

}

My application.properties

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=users_db

logging.level.org.springframework.data=debug

У меня есть три записи в базе данных, но вот что я вернул в качестве результатов почтальоном, завитком или браузером:

[
    {},
    {},
    {}
]

и в моей консоли:

2019-05-07 15: 05: 13.368 DEBUG 25022 --- [ctor-http-nio-4] osdmcore.ReactiveMongoTemplate: найти с помощью запроса: {} поля: Document {{}} для класса: class com .inovans.backend.usersms.domains.User в коллекции: пользователь

1 Ответ

1 голос
/ 08 мая 2019

В вашем классе данных User все ваши члены объявлены как частные, поэтому не будут сериализованы в JSON при возврате клиенту. Измените их на общедоступные (просто удалите слово private, так как оно будет по умолчанию общедоступным), и, надеюсь, это поможет.

...