我最近开始使用反应式,并创建了一个使用反应式流的简单应用程序。
我有以下代码,可以通过empID获得一名员工。仅当将showExtraDetails
布尔值设置为true
时特别要求时,我才需要向我的API提供有关emplyee的其他详细信息。如果将其设置为false,则必须在返回employee对象之前将额外的详细信息设置为null。现在,我在流上使用一个块来实现此目的。是否可以不加阻塞地执行此操作,以便我的方法可以返回Mono。
以下是我完成的代码。
public Employee getEmployee(String empID, boolean showExtraDetails) {
Query query = new Query();
query.addCriteria(Criteria.where("empID").is(empID));
Employee employee = reactiveMongoTemplate.findOne(query, Employee.class, COLLECTION_NAME).block();
if (employee != null) {
logger.info("employee {} found", empID);
}
if (employee != null && !showExtraDetails) {
employee.getDetails().setExtraDetails(null);
}
return employee;
}
答案 0 :(得分:1)
尝试此操作,应假设reactiveMongoTemplate
是您的mongo存储库
return reactiveMongoTemplate.findById(empID).map(employee -> {
if (!showExtraDetails) {
employee.getDetails().setExtraDetails(null);
}
return employee;
});