Как изменить атрибуты объекта Mono, не блокируя его при загрузке Spring - PullRequest
0 голосов
/ 19 сентября 2018

Я недавно начал использовать реактив и создал простое приложение, которое использует реактивные потоки.

У меня есть следующий код, который я получаю сотруднику по empID.Я должен предоставить дополнительную информацию о emplyee моему API только в том случае, если он специально запрашивается, когда для showExtraDetails boolean установлено значение true.Если установлено значение false, я должен установить дополнительные детали в null, прежде чем возвращать объект employee.Прямо сейчас я использую блок в потоке, чтобы достигнуть этого.Можно ли сделать это без блока, чтобы мой метод мог вернуть 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;

}  

1 Ответ

0 голосов
/ 19 сентября 2018

Попробуйте это, должно работать так, предполагая, reactiveMongoTemplate ваш монго-репозиторий

return reactiveMongoTemplate.findById(empID).map(employee -> {
            if (!showExtraDetails) {
              employee.getDetails().setExtraDetails(null);
            }
            return employee;                
        });
...