node.js - 使用 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,但不知道该怎么做?
解决方案
我不知道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);
推荐阅读
- input - 直接从 CSV 文件中获取值并作为输入传递
- java - 在 JavaFX 媒体播放器中连续流式传输视频块
- python - 在 lattice machXO3 dev 上使用 ft2232H。木板
- android - 如何使用文件位置链接从 Firebase RealtimeDatabase 下载保存在 FirebaseStorage 中的文件?
- angularjs - AngualrJs:ui-router 视图中的 ag-grid (templateUrl)
- c++ - 迭代器如何在 C++ 内部工作?
- bash - 使用 shell 脚本将 YAML 数据转换为 CSV
- server - opennebula-sunstone 服务失败
- typescript - 泛型类型扩展联合不会被类型保护缩小
- javascript - 如何在 VS Code 控制台上查看完整的递归日志?