【问题标题】:Output only JSON values using NodeJS Express for an API使用 NodeJS Express 为 API 仅输出 JSON 值
【发布时间】:2021-06-05 07:05:04
【问题描述】:

我正在使用 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,但不知道该怎么做?

【问题讨论】:

  • 那个输出不是有效的json
  • 谢谢,这是我的简化错误。我修改了问题并将有效的 JSON 作为我的目标输出。我实际上不需要它是 JSON 并且可以使用 csv 样式,只用逗号分隔值和每个项目的新行。我想知道是否有 JSON 解决方案。
  • 看数组图

标签: node.js json api express


【解决方案1】:

不知道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);

【讨论】:

    【解决方案2】:
    response.rows.map( row => {
      return [row.Time, +row.Values];
    });
    

    【讨论】:

    • 谢谢,这是我正在寻找的格式。
    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2020-11-22
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多