【问题标题】: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}%`;
        })
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 2012-06-20
        • 2014-07-07
        • 1970-01-01
        相关资源
        最近更新 更多