Как преобразовать Multi<Document>в Map<Long,List<Offer> в Quarkus Reactive с клиентской библиотекой Mongo

Я пытаюсь прочитать данные коллекций из MongoDB, используя ReactiveMongoClient в Quarkus. Я получаю Multi и пытаюсь сопоставить свой пользовательский объект и подготовить список и преобразовать в Map<Long,List> offerMapGroubyCustomerId, но безуспешно. кто-нибудь, пожалуйста, помогите мне в этом. Я пробовал так в своем планировщике в Quarkus Reactive Programming.

Фрагмент кода:

      @ApplicationScoped
public class OfferScheduler {

  @Inject
    ReactiveMongoClient reactiveMongoClient;

    @Scheduled(cron = "{cron.expr}")
    public void publishPropositions() {
        getOffersCollection()
                .aggregate(pipeline())
                .map(this::mapOffer)
                .collect()
                .with(Collectors.groupingBy(Offer::getMemberId))
                .onItem().transformToUni(this::iterateOfferMap);
    }

    private Uni<Void> iterateOfferMap(Map<Long, List<Offer>> item) {
       // I need to iterate this map here
        return Uni.createFrom().nullItem();
    }
    
    private Offer mapOffer(Document document) {
        return Offer.builder()
                .memberId(document.getLong(MEMBER_ID))
                .offerId(document.getLong(OFFER_ID))
                .remainingUsage(document.getInteger(REMAINING_USAGE))
                .offerName(document.getString(PROPOSITION_TYPE))
                .status(document.getString(STATUS))
                .build();
    }
    
    private ReactiveMongoCollection<Document> getOffersCollection() {
        return reactiveMongoClient.getDatabase("database").getCollection("offer");
    }
    
    
}

0 ответов

Другие вопросы по тегам