相关疑难解决方法(0)

当我的响应被 Spring 5 包装在 json 分页对象中时,如何返回 Flux<Order> ?

我有一个 Web 服务,我正在尝试使用新的 Spring 5 WebClient 来使用它。

\n\n

工作示例

\n\n
# GET /orders/\n[\n    { orderId: 1, ...\xc2\xa0},\n    { orderId: 1, ...\xc2\xa0}\n]\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及调用的java代码

\n\n
// Java\nFlux<Order> ordersStream = webClient.get()\n    .uri("/orders/")\n    .exchange()\n    .flatMap(response -> response.bodyToFlux(Order.class));\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题

\n\n

来自 Web 服务的响应是分页的,因此不直接包含项目列表,如上例所示。

\n\n

看起来像这样

\n\n
# GET /orders/\n{\n    "error": null,\n    "metadata": {\n      "total": 998,\n      "limit": 1000,\n      "offset": 0\n    },\n    "data": [\n       { orderId: 1, ... },\n       { orderId: 2, ... },\n    ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怎样才能获得子"data"密钥Flux<Order>

\n\n

可能的解决方案,但我不知道这是否是最好的方法......

\n\n

创建一个包装类并转换包装器 …

spring flux spring-boot project-reactor spring-webflux

5
推荐指数
0
解决办法
3000
查看次数

Spring Data Mongodb Reactive 存储库中 findAll 方法的分页

目前已经是一个关于分页的问题ReactiveCrudRepository。接受的解决方案适用于遵循某种findBy格式的查询。项目文档还引用了该用法:

https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.reactive.repositories.usage

示例 158. 用于持久化 Person 实体的基本存储库接口

public interface ReactivePersonRepository extends
ReactiveSortingRepository<Person, String> {

  Flux<Person> findByFirstname(String firstname);                     


  Flux<Person> findByFirstname(Publisher<String> firstname);          


  Flux<Person> findByFirstnameOrderByLastname(String firstname,
Pageable pageable); 

  Mono<Person> findByFirstnameAndLastname(String firstname, String
lastname);       

  Mono<Person> findFirstByLastname(String lastname);                  
}
Run Code Online (Sandbox Code Playgroud)

问题是这不适用于 findAll:

interface CustomerRepository : ReactiveCrudRepository<Customer, String> {
    fun findAll(pageable: Pageable): Flux<Customer>
Run Code Online (Sandbox Code Playgroud)

例外:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type Customer!
Run Code Online (Sandbox Code Playgroud)

Spring Data MongoDB 是否以某种方式支持这一点?

spring mongodb spring-data spring-data-mongodb

4
推荐指数
1
解决办法
1570
查看次数