【问题标题】:How to create dynamic filter in spring boot webflux?如何在spring boot webflux中创建动态过滤器?
【发布时间】:2019-12-16 03:50:24
【问题描述】:

我创建了一个 REST API,用于根据电子邮件、类型、角色、用户名等获取用户...

控制器

@GetMapping("/users/filter")
public Flux<Users> getUsers(
            @RequestParam("email") String query1,
            @RequestParam("type") String query2) {

       return userRepository.filterByQuery(query1, query2);
}

存储库

@Repository
public interface UsersRepository extends ReactiveMongoRepository<Users, String>, 
   @Query("{ \"$or\":[ {\"email\": ?0}, {\"type\": ?1} ] }")
   Flux<Users> findByQuery(String query1, String query2);
}

我得到的结果是正确的。基于以下查询。

 <host>/users/filter?email=user1@learning.com&type=0

问题:如何使其动态化,以便前端开发人员可以传递任意数量的查询参数,例如

<host>/users/filter?email=user1@learning.com&type=0&role=MENTOR
<host>/users/filter?email=user1@learning.com&type=0&role=MENTOR&username=user1
...

我正在使用带有 webflux 和 mongodb 的 Spring

谢谢

【问题讨论】:

    标签: mongodb spring-boot spring-webflux


    【解决方案1】:

    所以你可以做一个动态过滤器,你必须首先在@RequestParam中放置所需的选项= false

    @GetMapping("/users/filter")
        public Flux<Users> getUsers(
                @RequestParam("email") String query1,
                @RequestParam("type") String query2,
                @RequestParam(name = "role", required = false) String role,
                @RequestParam(name = "username", required = false) String username) {
    
            return userRepository.filterByQuery(query1, query2,role,username);
        }
    

    然后在服务中如果参数到达 null 然后你在 mongoReactiveRepository 中进行查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多