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

关于Express中app.get()及前后端交互逻辑的疑问

关于Express app.get()的疑问解答

你的理解基本正确,下面详细拆解整个流程和需要注意的细节:

  • 点击按钮后的前端行为:
    点击consult-button按钮时,触发的事件会通过window.location.href = '/consulting'让浏览器向你的Express服务器发送GET请求,目标路径就是/consulting。

  • 后端app.get()的作用:
    你在app.js里写的app.get('/consulting', (req, res) => {...})是Express的路由配置,它的核心作用就是监听所有发往/consulting路径的GET请求,一旦匹配到对应的请求,就会执行括号里的回调函数。

  • 回调函数的执行流程:
    回调里会依次创建PostgreSQL客户端、建立数据库连接、执行查询语句;查询完成后,如果没有错误,就会把查询结果的rows数据通过res.send()返回给浏览器,最后关闭数据库连接。

几个需要注意的细节

  1. 错误处理不完善:当前代码里如果查询出错,只在控制台打印错误,但没有给前端返回错误响应,也没有关闭数据库连接,建议补充完善:
client.query('SELECT * FROM questionaire', (err, result) => {
  if (err) {
    console.log(err);
    res.status(500).send('数据库查询失败'); // 向前端返回错误状态和信息
    client.end(); // 出错也要关闭数据库连接
    return;
  }
  res.send(result.rows);
  client.end();
});
  1. 页面跳转的显示问题:你现在用window.location.href跳转,浏览器收到后端返回的JSON数据后,会直接把JSON内容显示在新页面里。如果想把数据渲染到HTML页面中,有两种常见方式:
    • 改用AJAX/fetch请求:不跳转页面,异步获取数据后在当前页面渲染;
    • 使用模板引擎(比如EJS、Pug):后端把数据传给模板,渲染成完整的HTML页面再返回给浏览器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:25:29