2017-08-28 51 views
4

我想了解彈簧5的反應部分。我創建了簡單的休息終點找到所有使用彈簧web-flux和彈簧數據反應(mongo)的實體,但沒有看到如何實現分頁。有沒有什麼辦法來實現春季webflux分頁和彈簧數據反應

這是我在科特林簡單的例子:

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

這是否意味着反應終點不需要分頁?有一種方法可以使用這個堆棧從服務器端實現分頁嗎?

+0

[Spring自定義查詢與可分頁]的可能重複(https://stackoverflow.com/questions/27296533/spring-custom-query-with-pageable) – Makoto

回答

6

Spring Data中的反應支持不提供Page返回類型的方法。儘管如此,Pageable參數在驅動程序上傳遞limitoffset的方法簽名中也受支持,因此該存儲本身返回發出請求範圍的Flux<T>

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); 
} 
相關問題