修改 Flux 类型
Modify Flux type
我有一个包含以下数据结构的 Flux。
[
{
"id": 181,
"date": "2020-06-25T14:49:04",
"status": "publish",
"type": "wprm_collection",
"link": "http://35.228.92.155/?post_type=wprm_collection&p=181",
"collection": {
"id": 181,
"name": "Menu-4",
"nbrItems": "3",
"items": {}
}
},
{...},
{...},
{...}
]
下面的代码无法检索子对象并从中提供新的通量。
public Flux<Collection> getWeeklyMenus() {
System.out.println("Calling WP");
Mono<List<CollectionDetail>> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class).collectList();
List<Collection> collections = new ArrayList();
collectionDetailList.flatMap(items->{
for(CollectionDetail item : items){
Collection collection = item.getCollection();
collections.add(collection);
}
return null;
});
return Mono.just(collections).flatMapMany(Flux::fromIterable);
}
对于此示例,如何在不阻塞流的情况下将 Flux 转换为 Flux?
不提取调用 collectList()
的列表并直接在 Flux
上工作如何?
解决方案:
public Flux<Collection> getWeeklyMenus() {
Flux<CollectionDetail> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class);
return collectionDetailList
.map(CollectionDetail::getCollection);
}
我有一个包含以下数据结构的 Flux
[
{
"id": 181,
"date": "2020-06-25T14:49:04",
"status": "publish",
"type": "wprm_collection",
"link": "http://35.228.92.155/?post_type=wprm_collection&p=181",
"collection": {
"id": 181,
"name": "Menu-4",
"nbrItems": "3",
"items": {}
}
},
{...},
{...},
{...}
]
下面的代码无法检索子对象并从中提供新的通量。
public Flux<Collection> getWeeklyMenus() {
System.out.println("Calling WP");
Mono<List<CollectionDetail>> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class).collectList();
List<Collection> collections = new ArrayList();
collectionDetailList.flatMap(items->{
for(CollectionDetail item : items){
Collection collection = item.getCollection();
collections.add(collection);
}
return null;
});
return Mono.just(collections).flatMapMany(Flux::fromIterable);
}
对于此示例,如何在不阻塞流的情况下将 Flux
不提取调用 collectList()
的列表并直接在 Flux
上工作如何?
解决方案:
public Flux<Collection> getWeeklyMenus() {
Flux<CollectionDetail> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class);
return collectionDetailList
.map(CollectionDetail::getCollection);
}