webflux 返回空对象列表

R. *_*. I 2 mongodb kotlin project-reactor spring-webflux

我是 Spring 编程的新手。我正在使用 Reactor / Webflux 项目测试反应式编程。

数据库注册通过 Post 运行良好。

但是每个 API 调用 Get Mono 或 Flux 我都会得到一个空对象列表。你能给我一个解决方案吗?

我在 Kotlin 和 Mongo 反应式中通过 Spring boot / Maven 启动了该项目。

感谢您的帮助 !

我的用户应用程序

@SpringBootApplication
class UsersMsApplication

fun main(args: Array<String>) {
    runApplication<UsersMsApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)

我的模型:

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

Run Code Online (Sandbox Code Playgroud)

我的仓库

@Repository
interface UserRepository : ReactiveMongoRepository<User, String>
Run Code Online (Sandbox Code Playgroud)

我的用户服务

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

    fun findAllUsers(): Flux<User>

    fun findOneById(id: String): Mono<User>
}
Run Code Online (Sandbox Code Playgroud)

我的 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我的用户资源

@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)

}
Run Code Online (Sandbox Code Playgroud)

我的 application.properties

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

logging.level.org.springframework.data=debug
Run Code Online (Sandbox Code Playgroud)

我在数据库中有三个条目,但这是邮递员、curl 或浏览器返回的结果:

[
    {},
    {},
    {}
]
Run Code Online (Sandbox Code Playgroud)

在我的控制台中:

2019-05-07 15:05:13.368 DEBUG 25022 --- [ctor-http-nio-4] osdmcore.ReactiveMongoTemplate:使用查询查找:{} 字段:文档{{}} 类:类 com.inovans.backend .usersms.domains.User 集合:user

Yon*_*bbs 5

在您的User数据类中,您的所有成员都被声明为私有,因此在返回给客户端时不会被序列化为 JSON。将它们更改为 public(只需删除单词private,因为它会默认为 public),希望这会有所帮助。