2017-08-28 2 views
4

Ich versuche, reaktiven Teil der Feder zu verstehen 5. Ich habe einfachen Rest Endpunkt zum Finden aller Einheiten mit Feder web-flux und Federdaten reaktiv (Mongo) aber sehe keine Möglichkeit, die Paginierung zu implementieren.Gibt es eine Möglichkeit, Seitenumbruch im Frühjahr Webflux und Feder reaktive Daten zu implementieren

Hier ist mein einfaches Beispiel in Kotlin:

@GetMapping("/posts/") 
fun getAllPosts() = postRepository.findAll() 

bedeutet es, dass reaktiven Endpunkt nicht Paginierung erfordern? Gibt es eine Möglichkeit, die Paginierung serverseitig mithilfe dieses Stapels zu implementieren?

+0

Mögliche Duplikat [Frühling Benutzerdefinierte Abfrage mit seitenwechselbar] (https://stackoverflow.com/questions/27296533/spring-custom-query-with-pageable) – Makoto

Antwort

6

Die reaktive Unterstützung in Spring Data bietet keine Page Rückgabetyp. Dennoch wird der Pageable Parameter in Methodensignaturen unterstützt, die limit und offset an die Treiber und daher den Speicher selbst weiterleiten, wobei eine Flux<T> zurückgegeben wird, die den angeforderten Bereich ausgibt.

Flux<Person> findByFirstname(String firstname, Pageable pageable); 

Für weitere Informationen wenden Sie sich bitte einen Blick auf die aktuellen Reference Documentation for 2.0.RC2 und der Spring Data Examples.

0

Flux bietet skip und take Methoden Paginierung Unterstützung zu erhalten, und Sie können auch verwenden filter und sort zu filtern und das Ergebnis zu sortieren.

Die folgenden Codes funktionieren für mich.

@GetMapping("") 
public Flux<Post> all(@RequestParam(value = "q", required = false) String q, 
         @RequestParam(value = "page", defaultValue = "0") long page, 
         @RequestParam(value = "size", defaultValue = "10") long size) { 
    return this.postRepository.findAll() 
     .filter(p -> Optional.ofNullable(q).map(key -> p.getTitle().contains(key) || p.getContent().contains(key)).orElse(true)) 
     .sort(comparing(Post::getCreatedDate).reversed()) 
     .skip(page * size).take(size); 
} 
Verwandte Themen