MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak udostępnić nową metodę REST za pośrednictwem repozytorium Spring Data MongoDB z metadanymi ALPS/HATEOAS?

tl;dr

Będzie potrzebować niestandardowych implementacji dla repozytorium i kontrolera.

Szczegóły

Musimy się upewnić, że nie gubimy się we wszystkich aspektach, o których tu wspominasz. Spróbuję rozplątać gałęzie od dołu do góry:

Wykonywanie skryptów MongoDB

Jako dokumentacja referencyjna dotycząca wykonywania skryptów za pomocą MongoDB stanów (i już to odkryłeś), funkcjonalność jest dostarczana przez by MongoTemplate ScriptOperations . Tak więc, jak korzystać z tego API, powinno być jasne. Więcej informacji znajdziesz w dokumentacji Javadoc.

Wykonywanie skryptów za pośrednictwem repozytoriów Spring Data

Następną rzeczą, o którą prosisz, jest wykonanie tych skryptów przez abstrakcję repozytorium. Aby nie wylewać dziecka z kąpielą tutaj, upewnij się, że rozumiemy cel repozytorium:symuluje gromadzenie zbiorczych korzeni i dostęp do niego bez ujawniania podstawowego mechanizmu utrwalania . Udostępnianie typów, takich jak ExecutableMongoScript w repozytorium złamałoby tę ostatnią cechę. Dlatego właściwym podejściem jest tutaj stworzenie niestandardowej implementacji dla tej konkretnej funkcjonalności, jak opisano w dokumentacja referencyjna repozytoriów Spring Data .

Ujawnianie funkcjonalności przez REST

Zakładam, że odwołujesz się do funkcji Spring Data REST, aby udostępnić w swoim pytaniu dedykowany zasób dla metody zapytania repozytorium. Spring Data REST obecnie udostępnia automatycznie tylko deklaratywne metody zapytań, głównie z tego powodu, że trudno jest określić poprawną metodę HTTP do obsługi niestandardowych implementacji, ponieważ nie możemy odgadnąć, co dzieje się wewnątrz metody.

Zalecany sposób ujawnienia niestandardowych metod zapytań repozytorium przy użyciu niestandardowego kontrolera z @RequestMapping zgodnie z twoimi celami, wywołując repozytorium i używając PersistentEntityResourceAssembler można wstrzyknąć do metody obsługi, aby wytworzyć PersistentEntityResource wrócić.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaka jest najlepsza praktyka łączenia/rozłączania z bazą danych?

  2. Błąd transakcji PyMongo:Numery transakcji są dozwolone tylko w przypadku członka zestawu replik lub mongo

  3. MongoDB $group i jawne tworzenie grup z wyliczoną kolumną

  4. Łatwy sposób na synchronizację danych między MongoDB i Apache Solr

  5. System.FormatException” wystąpił w MongoDB.Bson.dll — XXX nie jest prawidłowym 24-cyfrowym ciągiem szesnastkowym