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

Node.js连接SQL Server API返回含recordsets的重复JSON问题求助

解决Node.js连接SQL Server API返回冗余JSON结构的问题

问题说明

用Node.js编写连接SQL Server的API时,返回的JSON包含recordsets、recordset等冗余结构,数据还存在重复,即便用JSON.stringify()也无法消除这些问题。

原代码

request.query('select ID as id,DISPLAY_MESSAGE_1 as description from pos  where ID=20524', function (err, recordset) {
    if (err) console.log(err)
    res.send(recordset);
})

当前返回结果

{"recordsets":[{"id":"20524","description":"MERHABA"}],"recordset":[{"id":"20524","description":"MERHABA"}],"output":{},"rowsAffected":[1]}

期望返回结果

{
  "id": 20524,
  "description": "MERHABA"
}

解决方案

从查询返回的结果对象里提取实际需要的数据项,并转换id的类型(数据库返回的是字符串类型)即可:

修改后的代码

request.query('select ID as id,DISPLAY_MESSAGE_1 as description from pos  where ID=20524', function (err, result) {
    if (err) {
        console.log(err);
        return res.status(500).send({ error: '查询失败' });
    }
    // 提取单个数据项,同时把id转为数字类型
    const targetData = result.recordset[0];
    if (targetData) {
        targetData.id = parseInt(targetData.id, 10);
        res.send(targetData);
    } else {
        res.status(404).send({ error: '未找到对应数据' });
    }
})

说明

  • SQL Server的Node.js驱动返回的result对象自带查询元数据(比如recordsets、rowsAffected),直接返回整个对象就会带上这些冗余内容,我们只需要取recordset数组里的实际数据。
  • 因为你的查询是按单个ID筛选,result.recordset是仅含一个元素的数组,取[0]就能拿到目标对象。
  • 数据库返回的id是字符串格式,通过parseInt()转成数字类型,就能匹配期望的返回格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:22:40