【问题标题】:JSON in express.js router with a forEach statementexpress.js 路由器中带有 forEach 语句的 JSON
【发布时间】:2020-03-21 03:08:19
【问题描述】:
我正在尝试让我的 API 返回一个 JSON,其中包含此 forEach 语句的每个名称。有8个名字,只能res.send一次。
代码如下
timeSeries.forEach(data => {
res.json(data.metric.labels.instance_name + Math.round(100000 * data.points[0].value.doubleValue) / 1000000 + "%")
})
【问题讨论】:
标签:
javascript
node.js
rest
express
【解决方案1】:
你应该为一个 json 响应返回一个列表结果
const result = timeSeries.map((data, i)=> {
const name = data.metric.labels.instance_name;
const roundedValue = Math.round(100000 * data.points[0].value.doubleValue) / 1000000;
return `${name}: ${roundedValue}%`;
});
res.json({
result: result
});
【解决方案2】:
res.json() 用于通过将给定数据序列化为 JSON 来完成响应,将其作为响应正文发送,然后结束响应。因此,多次调用它是没有意义的。
我认为您想要做的是 map timeSeries 数据到一个值数组并发送该计算数据数组的 JSON:
res.json(
timeSeries.map(data => {
const roundedValue = Math.round(100000 * data.points[0].value.doubleValue) / 1000000;
return `${data.metric.labels.instance_name}${roundedValue}%`;
})
)