春季反应式:检查用户是否存在

时间:2018-08-02 05:20:53

标签: spring mongodb spring-boot spring-data-mongodb

我使用的是弹簧反应式,需要检查天气用户的具体情况 数据是否存在,目前我无法解决该问题。

考虑场景

在我的文档中,我需要检查用户名或电子邮件是否已经存在

在RDBS中,我可以这样做 select count(id)>0 where username='abc' or email='abc@idx.com'

在使用spring react时,它返回单声道或通量,最简单的查询变为 {$or:[{"username":"abc"},{"email":"abc@idx.com"}]}会返回flux,但我需要布尔值才能从数据库进行验证

关于解决方案是我可以得到Flux<User>并使用form循环对其进行迭代,但是使用'result.block()'鞭打会阻塞其他一些线程,因此不是一个干净的解决方案。

是否有任何干净的解决方案或任何解决方案的想法。

谢谢

编辑一种可能的解决方案是在我现在正在使用的monogdb中创建唯一索引。但是,如果还有其他解决方案,请告诉我

1 个答案:

答案 0 :(得分:0)

使用Spring Data MongoDB,您可以使用以下内容:

public interface ReactiveUserRepository extends ReactiveSortingRepository<User, Long> {
     Mono<User> findByUsernameAndEmail(String username, String email);
}
  

为给定条件找到一个实体。对于非唯一结果,它会完成IncorrectResultSizeDataAccessException。

您可以在此处参考完整的语法:

https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/