如何在 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] = item
或 jsonData.push(item)
(不过可能是第一个)。
在下面的函数中,我的目标是写一个 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] = item
或 jsonData.push(item)
(不过可能是第一个)。