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

Node.js多SQL查询渲染HBS模板失败问题求助

解决Node.js多SQL查询结果获取错误的问题

我来帮你搞定这个问题!你遇到的第二个查询返回FieldPacket而不是实际数据的问题,核心原因是误解了mysql模块多语句查询的回调参数结构。

问题分析

当你开启multipleStatements: true执行多SQL语句时,conn.query的回调函数里:

  • 第二个参数results是一个数组,每个元素对应一个查询的结果集(也就是你要的实际数据)
  • 第三个参数fields是所有查询的字段元数据数组(就是你看到的FieldPacket列表)

你之前的代码把第三个参数命名为survey,错误地把字段元数据当成了第二个查询的结果,这才导致日志输出的不是实际数据。

修正后的代码

app.get('/',(req, res, next) => { 
  let sql = "SELECT * FROM employee; SELECT * FROM data_survey"; 
  conn.query(sql, (err, results, fields)=>{ 
    if(err) throw err;
    // results[0]对应第一个查询(employee表)的结果
    // results[1]对应第二个查询(data_survey表)的结果
    res.render('index',{ 
      data1: results[0], 
      data: results[1] 
    }); 
    console.log(results[1]); // 现在会输出第二个查询的实际数据
  }); 
});

额外确认点

再检查下你的数据库连接配置,确保multipleStatements确实已经正确开启(你提到已经配置了,但再确认一遍更稳妥):

const mysql = require('mysql');
const conn = mysql.createConnection({
  host: '你的数据库地址',
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库名',
  multipleStatements: true // 必须开启这个选项才能执行多语句查询
});

这样修改后,第二个查询的实际数据就能正确传递到HBS模板里,日志也会输出你期望的内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:27:28