如何在 express.js 中正确地将对象推送到特定数组?

How to push object to specific array correctly in express.js?

在下面的函数中,我的目标是写一个 JSON 包含数据数组(字符串)的文件。但是注释下的 push() 函数停止执行代码。没有这行代码,一切正常。但是,我需要使用此功能。我应该怎么做或者我应该使用一些不同的东西?

router.put('/insert_Data', function (req, res, next) {
  let body = req.body;
  let data = [];
  data.push(body['d']);
  let jsonData = [];

  for (let i = 0; i < data.length; i++) {
    let from = Number(data[i].from);
    let to = Number(data[i].to);
    let type = Number(data[i].type);
    let time = Number(data[i].time);
    let price = Number(data[i].price);
    let line = data[i].line;
    let coin = data[i].coin;
    from = from ? from : 0; 
    to = to ? to : 0;
    type = type ? type : 0;
    time = time ? time : 0;
    price = price ? price : 0;
    let item = `${from},${to},${type},${time},${price},${line},${coin}`;
    console.log('item', item);
    console.log('jsonData', jsonData);
    //jsonData[i].push(item); // TODO: здесь не выполняется!
    console.log('jsonData', jsonData);
  }
  console.log('after', jsonData);
  jsonData = JSON.stringify(jsonData, null, 1);
  // create new JSON
  fs.writeFileSync('output.json', jsonData, function(err){
    console.log(err.message);
  });

  
  
  
  res.end();
});

我使用 Postman 检查此代码。 req.body 如下 JSON:

{
    "d": {
        "from": 4444,
        "to": 222,
        "type": 322,
        "time": 222222,
        "price": "334",
        "line": "333",
        "coin": 333
    }
}

router 变量很简单,它只是 express.js 运行 在端口 5000 上。

您只能 push 数组。你正在做的是试图 push 在一个数组的元素中,但数组是空的。我猜你想做的是 jsonData[i] = itemjsonData.push(item)(不过可能是第一个)。