MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como usar referências de banco de dados com Spring Data MongoDB reativo?

TL;DR


Não há DBRef suporte no Spring Data MongoDB reativo e não tenho certeza de que haverá.

Explicação


Os projetos Spring Data são organizados em componentes Template API, Converter e Mapping Metadata. A implementação imperativa (bloqueio) da API de modelo usa uma abordagem imperativa para buscar Document s e convertê-los em objetos de domínio. MappingMongoConverter em particular, lida com toda a conversão e DBRef resolução. Essa API funciona em uma API síncrona/imperativa e é usada para ambas as implementações da API de modelo (imperativa e reativa).

Reutilização de MappingMongoConverter foi a decisão lógica ao adicionar suporte reativo, pois não precisamos duplicar o código. A única limitação é DBRef resolução que não se encaixa no modelo de execução reativa.

Para suportar DBRef reativo s, o conversor precisa ser dividido em vários bits e todo o tratamento da associação requer uma revisão.

Referência:https://jira.spring.io/browse/DATAMONGO-2146

Recomendação


Mantenha referências como chaves/IDs em seu modelo de domínio e procure-as conforme necessário. zipWith e flatMap são os operadores apropriados, dependendo do que você deseja arquivar (aprimore o modelo com referências, apenas referências de pesquisa).

Em uma nota relacionada:Reactive Spring Data MongoDB vem parcialmente com um conjunto de recursos reduzido. A extensão SpEL contextual é um recurso que não é suportado, pois esses componentes assumem um modelo de programação imperativo e, portanto, execução síncrona.