当前位置: 首页 > 知识库问答 >
问题:

Spring web-flux侧操作返回mono

沈宏朗
2023-03-14
public interface RefreshTokenReactiveRepository extends ReactiveCrudRepository<RefreshToken, Long> {

Mono<RefreshToken> findByValue(String value);

}

下一个metod在TokenService类中。

public Mono<TokenPair> exchangeRefreshToken(String refreshTokenValue) {
  return refreshTokenReactiveRepository.findByValue(refreshTokenValue)
    .zipWhen(
        previousRefreshToken ->
            refreshTokenReactiveRepository.deleteById(previousRefreshToken.getId())
                .then(Mono.just("")),
        (previousRefreshToken, deleteResult) -> previousRefreshToken
    )
    .map(RefreshToken::getAccount)
    .flatMap(this::generateTokenPair);
 }
refreshTokenReactiveRepository.deleteById(previousRefreshToken.getId())
                    .then(Mono.just(""))  

共有1个答案

钮刚洁
2023-03-14

如果不需要deletebyid方法的返回值,就不需要使用zip;在这里,您只需要从存储库中删除前面的令牌,如果它在那里,然后返回它。像这样的事情应该会奏效:

public Mono<TokenPair> exchangeRefreshToken(String refreshTokenValue) {
    return refreshTokenReactiveRepository.findByValue(refreshTokenValue)
            .flatMap(previousRefreshToken ->
                refreshTokenReactiveRepository
                        .deleteById(previousRefreshToken.getId())
                        .thenReturn(previousRefreshToken.getAccount())
            )
            .flatMap(this::generateTokenPair);
}

您可以通过在存储库中添加deletebyvalue方法来简化此操作;您将删除datastore中的令牌,并在单个数据库查询中将其取回。

 类似资料:
  • 我一辈子都搞不懂这件事。我需要第二双眼睛。。。或者更好的大脑。我正在尝试让这个“Hello Triangle”python示例正常工作。我一直在翻译c教程中的内容。然而,无论我做什么,我总是会遇到这个错误。 我的代码如下。我在Mac上运行,所以你会注意到其中有些东西可能不是PC所需要的。在glDrawArrays出现之前,一切都正常。我知道C版openGL与使用pyOpenGL的python之间的

  • 在“普通的”MongoDB中,对DB执行写入操作的方法(如.insertone()或.deleteOne())将分别返回或。这些对象将返回的布尔值和(如果适用)。这允许我们确保写操作成功。 但是,通俗地说,返回的是void: MongoOperations.Class 那么问题是,我们如何检索得到的和对象? 正在使用pom依赖项

  • 我正在我的项目中使用spring webflux。我的controller类调用返回Mono或Flux的服务类方法。 我正在尝试为我的服务类编写单元测试。我不确定如何为返回mono/flux的方法编写单元测试。我查看的大多数文章都建议我使用WebClientTest。但重点是,我在这里测试我的服务类。当我通过模拟服务类方法测试我的web层(控制器类)时,我使用了WebclientTest。 对如何

  • 本文向大家介绍Android实现返回键操作思路,包括了Android实现返回键操作思路的使用技巧和注意事项,需要的朋友参考一下 记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList 捕获用户的返回键操作,响应返回键,返回上一个界面 MainActivity.java MiddleManager.java 以上就是本文的全部内容,希望对大家的学习有所帮

  • 我一直在使用Spring Cache抽象和ehCache。我在目标方法上使用@Cacheable注释,如下所示: 注意:如果我没有在@cacheable注释中指定“key”,那么它可以工作。 有什么我忘了说明的吗?配置?注释?