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

如何通过MySQL Workbench从存储过程向NodeJS API返回JSON数据

将存储过程多结果集转换为指定JSON格式(Node.js)

你的问题核心是存储过程执行了两个SELECT语句,数据库驱动返回了包含两个结果集的数组,需要手动将其映射为你期望的键值对结构。以下是具体实现方案:

核心思路

存储过程返回的结果是一个二维数组:

  • 第一个子数组对应select * from category_details的查询结果
  • 第二个子数组对应select * from category_filters的查询结果

我们只需要将这两个子数组分别映射到目标对象的categoryDetails和categoryFilters字段即可。如果category_details返回的是单条数据,取子数组的第一个元素转为对象;如果是多条则直接使用子数组(根据你的预期格式,这里默认是单条)。

代码实现(以mysql2为例,支持Promise)

const mysql = require('mysql2/promise');

async function fetchCategoryInfo() {
  // 建立数据库连接
  const conn = await mysql.createConnection({
    host: '你的数据库地址',
    user: '用户名',
    password: '密码',
    database: '数据库名'
  });

  try {
    // 调用存储过程
    const [results] = await conn.execute('CALL 你的存储过程名()');
    
    // 组装目标JSON结构
    const formattedResponse = {
      categoryDetails: results[0][0], // 取第一个结果集的第一条数据(转为对象)
      categoryFilters: results[1]     // 第二个结果集直接作为数组
    };

    return formattedResponse;
  } finally {
    // 关闭连接
    await conn.end();
  }
}

// 调用示例
fetchCategoryInfo()
  .then(res => console.log(JSON.stringify(res, null, 2)))
  .catch(err => console.error(err));

代码实现(以mysql模块为例,回调方式)

const mysql = require('mysql');

const conn = mysql.createConnection({
  host: '你的数据库地址',
  user: '用户名',
  password: '密码',
  database: '数据库名',
  multipleStatements: true // 必须开启此选项以支持多结果集
});

conn.connect(err => {
  if (err) throw err;
  
  conn.query('CALL 你的存储过程名()', (queryErr, results) => {
    if (queryErr) throw queryErr;
    
    // 组装目标结构
    const formattedResponse = {
      categoryDetails: results[0][0],
      categoryFilters: results[1]
    };

    console.log(JSON.stringify(formattedResponse, null, 2));
    conn.end();
  });
});

注意事项

  • 如果category_details可能返回多条数据,将results[0][0]改为results[0]即可让categoryDetails成为数组
  • 不同数据库驱动的结果集结构可能略有差异,比如部分驱动会返回包含rows属性的对象,此时需要用results[0].rows替代results[0],具体参考驱动文档
  • 确保存储过程没有返回额外的结果集(比如存储过程内部的计数语句),否则需要调整结果集的索引位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:01:57