WebFlux出现接口已返回成功,但查询时数据未改变的问题

2023-10-30

问题描述

在使用WebFlux时遇到一个很奇怪的问题,先调用禁用账号接口,接着在进行查询该数据,结果页面显示数据未改变,在点一次时页面数据才刷新。即连续点两次查询接口,才能看到修改后的数据。

相关代码

前端

const disableAccount = (record) => {
  if (record && record.accountId) {
    disableAccountApi(record.accountId).then(() => {
      query();
    });
  }
};

后端

    @PostMapping("/{id}/disable")
    public R<Object> disableAccount(@PathVariable("id") String id){

        accountService.disableAccount(id);
        return R.message("已禁用该账号");
    }


    public void disableAccount(String id) {

         accountRepo.findById(id)
                .flatMap(accountDO -> {
                    accountDO.disabled();
                    return accountRepo.save(accountDO);
                }).subscribe();
    }

寻找原因

刚开始的时候以后时前端页面没有刷新的原因,尝试使用forceUpdate强制更新页面。发现没什么效果。后面通过使用onUpdated打印页面更新时的数据,发现和数据库不一致,即数据并未更新。由此想到WebFluxMono\Flux运行在不同的线程上。上面那种直接在方法中订阅,实际上接口返回之后,订阅的Mono还在执行。所以修改代码,不直接订阅Mono\Flux,将Mono\Flux作为返回值返回,就可以了

改正后的代码

    @PostMapping("/{id}/disable")
    public Mono<R<Object>> disableAccount(@PathVariable("id") String id){

        return accountService.disableAccount(id).thenReturn(R.message("已禁用该账号"));
    }

    public Mono<AccountDO> disableAccount(String id) {

        return accountRepo.findById(id)
                .flatMap(accountDO -> {
                    accountDO.disabled();
                    return accountRepo.save(accountDO);
                });
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebFlux出现接口已返回成功,但查询时数据未改变的问题 的相关文章

随机推荐

  • PyEMD库的安装和导入EMD, Visualisation问题[已解决]

    1 安装问题 直接pip安装可能会报错 error Microsoft Visual C 14 0 or greater is required 有两种方法可以解决 按照提示下载Microsoft C Build Tools并安装 官方下载
  • html网页自动提示框代码,多种网页弹出窗口代码

    经常上网的朋友可能到过这样一些网站 一进入首页立刻会弹出 一个窗口 或者按一个链接或按钮弹出 通常在这个窗口里会显示 一些注意事项 版权信息 警告 欢迎光顾之类的话或者作者想要 特别提示的信息 其实制作这样的页面非常容易 只要往该页面的 H
  • 对于第一阶段学习的总结

    阶段总结 杨芳芳 第一阶段的学习就到此结束了 在这一段时间中 学到了很多以前没有接触过的知识 让我对java有了很大的了解 并且能够自己编写一些小程序了 下面就是我对于在这段期间的学习情况的总结 由于我是开课后从UI转进JAVA来的 刚进来
  • 天翼云登录破解js逆向

    网站 https m ctyun cn wap main auth login redirect 2Fmy 账号 234555551 qq com 密码 fffffffffff 666 抓包分析一下 密码直接加在url后面进行请求 打个xh
  • 阐述篇-聊聊我眼中の《面试宝典》

    相信或许很多人是因为通过搜索面试宝典的文档点进来的 你或许正在忙碌找工作 你或许想在跳槽之前把能量池蓄满 if dev HR 或许你可以花5min看完 求职篇 面试多家公司却总是电话通知 why 面试感觉聊的很好 就是迟迟没有电话 why
  • 游戏开发unity UGUI知识系列:判断是否点击在UI对象上

    EventSystem current IsPointerOverGameObject 检测点击是否在ui上 通常可以用来方便判断是否点击在屏幕上 用来进行镜头左右上下的角度的调整前的判断 需要注意的是 使用EventSystem时 场景里
  • 物理地址 = 段地址*10H + 偏移地址

    程序如何执行 CPU先找到程序在内存中的入口地址 地址总线 8086有20根地址总线 每一根可以某一时传0或1 20位的二进制数字可以表示的不同的数字的个数是2 20 1048576 1048576 byte 1024 1024 KB 注
  • ffmpeg将webm格式转换成mp4

    ffmpeg将webm格式转换成mp4 起因 转换成HEVC编码 H 265 转换成AVC编码 h 264 起因 手头有一部4K风景视频 辛辛苦苦从油管上下载下来 想要用wallpaper engine做成壁纸 却发现格式是webm vp9
  • MAC地址表

    MAC地址表实验 动态AMC地址 通过源mac地址表学习
  • C语言程序设计经典例题----海伦公式求三角形面积

    海伦公式 又译作希伦公式 海龙公式 希罗公式 海伦 秦九韶公式 它是利用三角形的三条边的边长直接求三角形面积的公式 表达式为 S p p a p b p c 以下是这个程序的成功和失败示例 这个程序利用到判断以及求值两个部分 因此我们可以利
  • 树的遍历(概念与习题)

    树的遍历概念 首先我们观察三种遍历方式对根 左 右结点的遍历顺序 先序的遍历顺序 根 左 右 中序的遍历顺序 左 根 右 后序的遍历顺序 左 右 根 遍历顺序可以理解为 优先级 先序遍历举例 若一个节点有左子树和右子树 那它下一步将会先走向
  • SSM框架整合静态资源自动加请求前缀

    静态资源自动加请求前缀 当如js文件在jsp中被引入时 可能请求转发到该页面会js文件报404错误 这是因为js文件路径在项目名与js文件名之间自动加上了请求路径的父级路径 解决方案 在jsp页面顶部以及head标签中加入Java脚本代码如
  • 【小结】从输入URL到页面显示发生了什么?(二)渲染

    本文总结从输入URL到页面显示的第二部分内容 渲染 从拿到HTML资源到显示的过程 主要过程 构建DOM树 样式计算 分成三步 把 CSS 转换为浏览器能够理解的结构 styleSheets 转换样式表中的属性值 使其标准化 计算出 DOM
  • yuv图解(YUV444,YUV422,YUV420,YV12,NV12,NV21)

    参考文章 图解YUV YUV是什么 YUV 444 422 420 And YUV Packed Planar Semi Planar 知识点 YUV是用一个称为Y 相当于灰度 的亮度分量和两个色度分量表示 分别称为U 蓝色投影 和V 红色
  • Cgroups----限制kvm虚拟机

    Cgroups 限制kvm虚拟机 Cgroups相关概念及其关系 相关概念 1 任务 task 在cgroups中 任务就是系统的一个进程 2 控制族群 control group 控制族群就是一组按照某种标准划分的进程 Cgroups中的
  • 查看mysql版本的六种方法

    1 root localhost mysql V 2 root localhost mysql help grep Distrib 在mysql下有四种 3 登陆时会显示 4 mysql gt status 5 mysql gt selec
  • 中阳:ChatGPT横空出世,或迎来“安卓时刻”

    ChatGPT横空出世 写代码 写情书 写文章 做题 它啥都会 会被人工智能替代的行业 由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT在各大中外媒体平台掀起了一阵狂热之风 继 AI 绘画之后 由 OpenAI 上线的 C
  • Reference vs Pointer

    参考自Dan Saks的文章 An Introduction to References References and const The key insights I believe the key insight into why C
  • 用git和idea推送本地项目到远程仓库

    方式一 git命令方式 1 鼠标右键 Git Bash Here 2 初始化仓库 git init 3 配置签名 git config user name Zhang3 git config user email zhang3 163 co
  • WebFlux出现接口已返回成功,但查询时数据未改变的问题

    问题描述 在使用WebFlux时遇到一个很奇怪的问题 先调用禁用账号接口 接着在进行查询该数据 结果页面显示数据未改变 在点一次时页面数据才刷新 即连续点两次查询接口 才能看到修改后的数据 相关代码 前端 const disableAcco