Node JS中如何转换数据库查询返回的JSON响应体为指定格式
你只需要在返回响应前对数据库查询结果做一次字段映射和结构聚合即可,修改后的代码如下:
const express = require('express') const router = express.Router() router.get('/:id', async (req, res) => { const id = req.params.id; const getDetails = await executeDb2Query({ sql: SQL_QUERIES.GET_DETAILS, values: [id], log: req.log, name: 'Get Details', errorMsg: 'Get error while getting Details ' }) // 新增格式转换逻辑 if (!getDetails || getDetails.length === 0) { return res.json([]) } // 因为是按d_num查询,所有结果D_NUM一致,直接取第一条即可 const result = [{ dnum: getDetails[0].D_NUM, details: getDetails.map(item => ({ primaryid: String(item.PRIMARY_ID), startdate: item.START_DATE, enddate: item.END_DATE, fnum: item.F_NUM, lastmodifieddate: item.LAST_MODIFIED })) }] return res.json(result); })
如果后续需要兼容同时返回多个d_num的分组需求,可以用对象做分组缓存,参考逻辑如下:
const groupMap = {} getDetails.forEach(item => { if (!groupMap[item.D_NUM]) { groupMap[item.D_NUM] = { dnum: item.D_NUM, details: [] } } groupMap[item.D_NUM].details.push({ primaryid: String(item.PRIMARY_ID), startdate: item.START_DATE, enddate: item.END_DATE, fnum: item.F_NUM, lastmodifieddate: item.LAST_MODIFIED }) }) const result = Object.values(groupMap)
内容的提问来源于stack exchange,提问作者neil
相关产品推荐
相关产品推荐

