2017-08-28 2 views
4

私はスプリング5のリアクティブ部分を理解しようとしています。スプリングweb-fluxとスプリングデータリアクティブ(mongo)ページネーションの実装方法は見当たりません。ここでスプリングウェブページングとスプリングデータを有効にする方法はありますか?

はKotlinの私の簡単な例です:

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

それは反応性エンドポイントは、ページネーションを必要としないことを意味するのでしょうか?このスタックを使用してサーバーサイドからページネーションを実装する方法はありますか?

+0

可能な複製(https://stackoverflow.com/questions/27296533/spring-custom-query-with-pageable) – Makoto

答えて

6

春データ中の反応性のサポートはPage戻り値の型の手段を提供していません。依然として、Pageableパラメータは、要求された範囲を発するFlux<T>を返し、ドライバしたがって店舗自体にlimitoffsetに渡すメソッドのシグネチャに支持されています。

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

は、詳細については、現在のReference Documentation for 2.0.RC2Spring Data Examplesを見てください。

0

フラックスは、ページネーションのサポートを得るためにskiptakeメソッドを提供します。また、結果をフィルタリングし、ソートするfiltersortを使用することができます。

次のコードは、私のために動作します。

@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); 
} 
[ページング可能と春カスタムクエリ]の
関連する問題