Использование 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
.
Как я могу сохранить оба свойства, которые вложены внутри Mono
s, не прибегая к Mono#block
?
2 ответа
Решение
Я сейчас использую Mono#zipWith
объединить оба Mono
с. Затем я создаю сущность внутриMono#flatMap
.
service.getCompanyId()
.zipWith(service.getUserId())
.flatMap(objects -> createEntity(objects.getT1(), objects.getT2()))
Я предлагаю следовать руководству в Google codelab.
Здесь вы можете обнаружить, что Firestore может находиться в режиме Datastore, что делает предыдущее руководство подходящим для вас.