sql >> Database >  >> NoSQL >> MongoDB

Hoe stel ik een nieuwe REST-methode beschikbaar via een Spring Data MongoDB-repository met ALPS/HATEOAS-metadata?

tl;dr

Het heeft aangepaste implementaties nodig voor de repository en de controller.

Details

We moeten ervoor zorgen dat we niet verdwalen in alle verschillende aspecten die je hier noemt. Ik zal proberen de takken van onder naar boven te ontwarren:

MongoDB-scripts uitvoeren

Als de referentiedocumentatie over het uitvoeren van scripts met MongoDB staten (en je hebt het al ontdekt), wordt de functionaliteit geleverd by MongoTemplate 's ScriptOperations . Dus hoe je die API moet gebruiken, moet duidelijk zijn. Raadpleeg de Javadoc voor meer informatie.

Scripts uitvoeren via Spring Data-opslagplaatsen

Het volgende waar je om vraagt, is het uitvoeren van die scripts via de repository-abstractie. Om het kind hier niet met het badwater weg te gooien, moet u ervoor zorgen dat we het doel van een opslagplaats begrijpen:het simuleert een verzameling verzamelde wortels en toegang ertoe zonder het onderliggende persistentiemechanisme bloot te leggen . Typen blootleggen zoals ExecutableMongoScript op de repository zou de laatste eigenschap breken. De juiste aanpak hier is dus om een ​​aangepaste implementatie voor die specifieke functionaliteit te maken, zoals beschreven in de referentiedocumentatie over Spring Data-opslagplaatsen .

De functionaliteit blootleggen via REST

Ik neem aan dat u verwijst naar de functie van Spring Data REST om een ​​speciale bron voor de repository-querymethode in uw vraag bloot te leggen. Spring Data REST stelt momenteel alleen declaratieve querymethoden automatisch beschikbaar, voornamelijk omdat het moeilijk is om te redeneren over de juiste HTTP-methode om aangepaste implementaties te ondersteunen, omdat we niet kunnen raden wat er in de methode gebeurt.

De aanbevolen manier om aangepaste querymethoden voor repository's beschikbaar te maken met behulp van een aangepaste controller met een @RequestMapping geschikt zijn voor uw doel, de repository aanroepen en een PersistentEntityResourceAssembler gebruiken injecteerbaar in de handlermethode om een ​​PersistentEntityResource te produceren om terug te keren.




  1. juiste manier om het json-formaat te retourneren met behulp van node of express

  2. Vraag mongo om waardeveranderingen in tijdreeksen te detecteren

  3. Hoe afstand te krijgen - MongoDB Template Near-functie

  4. Hoe mijn inhoud met nodejs vm op google cloud te serveren