Как сохранить объект в Mongo DB, используя реактивный - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть проект springboot с зависимостью spring-boot-starter-data-mongodb -active.У меня есть следующий код, который я использую для сохранения объекта ученика в коллекции:

@Autowired
private ReactiveMongoTemplate reactiveMongoTemplate;

public Mono<Student> save(String studentDetails) throws IOException {

Student student = mapper.readValue(studentDetails, Student.class);

Mono<Student> studentMono = reactiveMongoTemplate.save(student, "StudentCollection");

return studentMono;

} 

Я настроил клиент Монго.Приведенный выше код сохраняет данные в коллекции только тогда, когда я блокирую поток.Как я могу это исправить?

ОБНОВЛЕНИЕ

Мой клиент mongo имеет пользовательскую конфигурацию, как показано ниже:

public class MongoConfig {

@Autowired
private MongoSslContext mongoSslContext;


@Bean
public MongoClient mongoClient() throws UnrecoverableKeyException, KeyManagementException, KeyStoreException,
        NoSuchAlgorithmException, CertificateException, IOException {

        mycustomSslContext = mongoSslContext.createSSLContext();


        SslSettings sslSettings = SslSettings.builder().context(mycustomSslContext).build();

        MongoClientSettings.builder().sslSettings(sslSettings);

        return MongoClients.create(new ConnectionString("mongodb://localhost:27019/studentDB?streamType=netty&ssl=true&authMechanism=MONGODB-X509"));       
}

public ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory() throws UnrecoverableKeyException,
        KeyManagementException, KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {        

    return new SimpleReactiveMongoDatabaseFactory(mongoClient(), "studentDB");

}

@Bean
public ReactiveMongoTemplate reactiveMongoTemplate() throws UnrecoverableKeyException, KeyManagementException,
        KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {

    return new ReactiveMongoTemplate(reactiveMongoDatabaseFactory());
}

}

1 Ответ

0 голосов
/ 21 сентября 2018

Используйте FlatMap, вот как вы можете использовать реактив ..

public Mono<Student> save(String studentDetails) throws IOException {

    Student student = mapper.readValue(studentDetails, Student.class);
    Mono<Student> studentMono = reactiveMongoTemplate.save(student);

    return studentMono;

} 
...