首页 > 解决方案 > 使用 NodeJS Express 为 API 仅输出 JSON 值

问题描述

我正在使用 NodeJS 和 Express 创建一个 API,并且可以在查询我的数据库后创建我的 JSON 响应。我想最小化响应的大小,只输出值而不是键。这是我正在创建的响应。

const api = (req, res) => {
    pool.query(query, (err, response) => {
        if (err){
        }
    res.status(200).json(response.rows);
})

查询的响应是一个简单的表(为了简化,我省略了列)。

Time Values
1 50
2 40
3 70
4 10

实际的 JSON 响应是:

[{"time":1,"Values":"50"},{"time":2,"Values":"40"},{"time":3,"Values":"70"},{"time":4,"Values":"10"}]

我的目标输出是:

[[1,50],[2,40],[3,70],[4,10]]

是否有一个简单的选项可以改变这条线?

res.status(200).json(response.rows);

或者我是否需要操纵查询的响应以删除列标题?我正在使用 Postgres,但不知道该怎么做?

标签: node.jsjsonapiexpress

解决方案


我不知道response.rows 的数据类型是什么 那么response.rows
的数据类型是JSON,将其转换为Object 类型

const responseRows = JSON.parse(response.rows);

如果response.rows的数据类型是object,那么不需要做任何事情

const responseRows = response.rows;

此时您的 response.rows 是一个对象

const actResponse = responseRows.map(el => {
 return[ el.time, Number(el.Values) ]
});
res.status(200).json(actResponse);

推荐阅读