Как отобразить результат Flux на другой тип объекта с помощью ReactiveMongoTemplate - PullRequest
0 голосов
/ 16 апреля 2020

API поиска в java классе Spring @Repository хочет вернуть Flux<AggregatedObject>, но getReactiveMongoTemplate (). Find () возвращает документ другого типа. Что может быть лучшим способом преобразования результирующего потока в тип AggregatedObject?

public Flux<AggregatedObject> find() {
    Criteria filterCriteria = getFilterCriteria();
    Query query = new BasicQuery(filterCriteria.getCriteriaObject());
    Flux flux = getReactiveMongoTemplate().find(query, Document.class, collectionName);
    // how to convert Document to AggregatedObject and return?
}

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

мы можем сделать это так;

flux.map(d -> reactiveMongoTemplate.getConverter()
                .read(AggregatedObject.class, d.get("value", Document.class)))
0 голосов
/ 16 апреля 2020

Просто добавьте AggregatedObject как параметризованный тип :

public Flux<AggregatedObject> find() {
    Criteria filterCriteria = getFilterCriteria();
    Query query = new Query(filterCriteria);
    return getReactiveMongoTemplate().find(query, AggregatedObject.class, collectionName);
}
...