Как правильно поместить объект в определенный массив в express.js ?

#javascript #node.js #json #express #push

#javascript #node.js #json #выразить #толкать

Вопрос:

В функции ниже моя цель — написать файл 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.

Комментарии:

1. Соловейчук, какую базу данных вы используете? Создайте модель, а затем легко с помощью async / await ПОМЕСТИТЬ или выполнить любой другой метод API.

2. Я не использую никакой базы данных. Просто записываю в новый файл json.

Ответ №1:

Вы можете только push для массивов. То, что вы делаете, пытается push в элементе массива, но массив пуст. Я предполагаю, что вы пытаетесь сделать, это jsonData[i] = item или jsonData.push(item) (возможно, первое, хотя).