Использование Mono <T> в Spring для заполнения объекта Cloud Firestore

Я использую spring-cloud-gcp-starter-data-firestore для доступа к Google Cloud Firestore в моем приложении Java Spring.

Сейчас моя сущность выглядит так:

public class Subscription {

    public String userId;
    public String companyId;

    // other properties

}

Однако я получаю userId а также companyId через reactor.core.publisher.Mono в org.springframework.security.core.context.ReactiveSecurityContextHolder.

Как я могу сохранить оба свойства, которые вложены внутри Monos, не прибегая к Mono#block?

2 ответа

Решение

Я сейчас использую Mono#zipWith объединить оба Monoс. Затем я создаю сущность внутриMono#flatMap.

service.getCompanyId()
   .zipWith(service.getUserId())
   .flatMap(objects -> createEntity(objects.getT1(), objects.getT2()))

Я предлагаю следовать руководству в Google codelab.

Здесь вы можете обнаружить, что Firestore может находиться в режиме Datastore, что делает предыдущее руководство подходящим для вас.

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