Я использую spring-cloud-gcp-starter-data-firestore для доступа к Google Cloud Firestore в моем приложении Java Spring.
spring-cloud-gcp-starter-data-firestore
В настоящее время моя сущность выглядит следующим образом:
public class Subscription { public String userId; public String companyId; // other properties }
Однако я получаю userId и companyId через reactor.core.publisher.Mono в org.springframework.security.core.context.ReactiveSecurityContextHolder.
userId
companyId
reactor.core.publisher.Mono
org.springframework.security.core.context.ReactiveSecurityContextHolder
Как я могу сохранить оба свойства, вложенные в Mono s, не прибегая к Mono#block?
Mono
Mono#block
Я предлагаю следовать учебнику в Google codelab .
Здесь вы можете обнаружить, что Firestore может находиться в режиме хранилища данных, что делает предыдущий учебник подходящим для вас. .
Я сейчас использую Mono#zipWith для объединения обоих Mono с. Затем я создаю сущность внутри Mono#flatMap.
Mono#zipWith
Mono#flatMap
service.getCompanyId() .zipWith(service.getUserId()) .flatMap(objects -> createEntity(objects.getT1(), objects.getT2()))