MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare i riferimenti db con Spring Data MongoDB reattivo?

TL;DR

Non c'è DBRef supporto in Spring Data MongoDB reattivo e non sono sicuro che ci sarà.

Spiegazione

I progetti Spring Data sono organizzati in componenti Template API, Converter e Mapping Metadata. L'implementazione imperativa (di blocco) dell'API del modello utilizza un approccio imperativo per recuperare Document se convertirli in oggetti di dominio. MappingMongoConverter in particolare gestisce tutte le conversioni e DBRef risoluzione. Questa API funziona in un'API sincrona/imperativa e viene utilizzata per entrambe le implementazioni dell'API Template (imperativa e reattiva).

Riutilizzo di MappingMongoConverter è stata la decisione logica durante l'aggiunta del supporto reattivo in quanto non è necessario duplicare il codice. L'unica limitazione è DBRef risoluzione che non si adatta al modello di esecuzione reattivo.

Per supportare DBRef reattivo s, il convertitore deve essere suddiviso in più bit e l'intera gestione dell'associazione richiede una revisione.

Riferimento:https://jira.spring.io/browse/DATAMONGO-2146

Raccomandamento

Conserva i riferimenti come chiavi/ID nel tuo modello di dominio e cercali se necessario. zipWith e flatMap sono gli operatori appropriati, a seconda di cosa si desidera archiviare (migliora il modello con i riferimenti, cerca solo i riferimenti).

In una nota correlata:Reactive Spring Data MongoDB viene fornito in parte con un set di funzionalità ridotto. L'estensione SpEL contestuale è una funzionalità non supportata in quanto questi componenti presuppongono un modello di programmazione imperativo e quindi un'esecuzione sincrona.