NodeJS中json_agg查询结果与pgAdmin不一致问题求助
PostgreSQL查询在Node.js中返回的JSON显示为[Object]的解决办法
问题本质
你看到的[Object]只是Node.js控制台打印时的简化输出,数据本身是完整且正常的。Node.js默认打印嵌套对象/数组时,为了避免输出内容过长,会将深层结构简化为[Object],并非数据损坏。
验证完整数据结构
把代码里的console.log(data)替换成下面的写法,就能看到和pgAdmin一致的完整JSON结构:
console.log(JSON.stringify(data, null, 2))
另外你代码里的res.json(data)已经正确将完整数据序列化为JSON返回给前端了,前端接收到的是正常的嵌套结构,只是控制台打印没展开而已。
额外修正:查询语句的逻辑bug
顺便提一句,你的SQL查询里有个小错误:interval_end的case分支里误用了interval_start字段,导致返回的end时间和start时间一致,建议修正:
select locationid, json_agg(json_build_object('dayofweek',dayofweek, 'start', case when interval_start is NULL then '0' else to_char(interval_start, 'HH12:MI:SS') end, 'interval_end', case when interval_end is NULL then '0' else to_char(interval_end, 'HH12:MI:SS') end)) as open_hours from availability group by locationid
控制台直接展开显示的方法
如果想让控制台直接展开所有嵌套结构(不用转JSON字符串),可以用Node.js的util.inspect工具:
const util = require('util'); console.log(util.inspect(data, { depth: null, colors: true }));
内容的提问来源于stack exchange,提问作者freqnseverity
相关产品推荐
相关产品推荐

