我正在尝试学习在Quarkus框架上使用ReactiveMongoClient。
我以Uni身份发送回复部分成功
@GET
@Path("/unpaginated")
public Uni<List<Staff>> unpaginatedStaffList() {
return staffService.getStaffResponse();
}
但是,当我尝试获取其他类的对象(StaffResponse)以包含用于分页的Link对象时,我没有得到任何Staff记录。 (目前,我已对分页的链接进行了硬编码)
@GET
@Path("/paginated")
public StaffResponse paginatedStaffList() {
List<Link> links = LinkService.getLinks("/staff?page=2&limit=20", "next");
Uni<List<Staff>> staff = (Uni<List<Staff>>) staffService.getStaffResponse();
return new StaffResponse(links, staff);
}
“工作人员”在响应中为空。
MongoClient正在返回“工作人员确定”的列表,好像Response对象没有获得该列表。 尝试阅读SmallRye Mutiny文档-无法解决。
请帮助。
我已经在以下位置提交了代码:https://github.com/doepradhan/staffApi 和样本json数据文件(https://github.com/doepradhan/staffApi/blob/master/sample-staff-data.json)
谢谢您的帮助。
答案 0 :(得分:3)
您不能混淆两种方法。您需要将Uni
用作端点的输出。这意味着您需要将两个输入源都转换为Uni,进行合并,然后映射为StaffResponse
。
LinkService
以返回Uni(或使用Uni.createFrom()。item(links))public StaffResponse(List<Link> links, List<Staff> staff) {
this.links = links;
this.staff = staff;
}
Uni<Tuple>
,然后将其映射到StaffResponse
: @GET
@Path("/paginated")
public Uni<StaffResponse> paginatedStaffList() {
final Uni<List<Link>> links =
Uni.createFrom().item(LinkService.getLinks("/staff?page=2&limit=20", "next"));
Uni<List<Staff>> staff = staffService.getStaffResponse();
return staff.and(links).map(it -> new StaffResponse(it.getItem2(), it.getItem1()));
}
我创建了有效的PR here