You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express.js 持续返回数据库已删除旧查询结果的问题排查

解决PostgreSQL+Express接口返回旧数据的问题
  • 确认增删改操作已提交事务
    PostgreSQL默认处于事务模式,不管是手动在psql里执行操作,还是应用代码里的更新逻辑,未提交的变更仅在当前事务内可见。如果是手动操作,执行完增删改后一定要运行COMMIT;如果是应用代码,要确保更新语句没有卡在未提交的事务里,比如使用pg客户端时有没有正确完成事务流程。

  • 核对数据库连接配置
    检查dbConfig里的database参数,确认接口查询的数据库和你做增删改操作的是同一个库——别不小心连到测试库或者备份库了,这类低级错误很容易被忽略。

  • 跳过客户端缓存测试
    别用普通浏览器窗口测试,直接开隐私模式访问接口,或者用命令行工具执行curl http://你的接口地址/getEntries发起请求。虽然你加了Cache-Control头,但有些浏览器可能存在顽固的本地缓存,用无缓存环境测试才能确定问题出在服务端还是客户端。

  • 排查应用内的本地缓存
    检查代码里有没有把查询结果存在全局变量、内存缓存工具(比如node-cache)里,导致后续请求直接返回缓存的旧数据,而非重新查询数据库。比如有没有类似let cachedListings;的变量,第一次查询后赋值,之后就直接返回它而不再执行dbPool.query。

  • 检查事务隔离级别
    在接口的查询代码前添加一句await dbPool.query('SHOW transaction_isolation;'),查看返回的隔离级别是否为read committed(PostgreSQL默认值)。如果被改成了repeatable read或更高级别,同一个事务内的重复查询会返回快照数据,但你的接口每次都是独立的query调用(默认自动提交),这个概率不高,但可以排查确认。

  • 重启Express应用
    有时候应用进程可能持有异常的连接或状态,重启一下应用后,再测试接口是否能获取到新数据。

内容的提问来源于stack exchange,提问作者dovexz12323

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:52:39