提前感谢您的帮助/支持。
我正在使用Newman作为一个库来运行一个集合,其中包含一个包含多个数据集的CSV文件。
我正在尝试使用从每个数据集的API响应中检索到的参数值来更新CSV文件的副本。
我坚持输出为数据表中每一行的每个响应检索到的“成本”值。
我想我知道问题出在哪里了,我需要向数组中添加'getcost‘。此行在运行时检索成本。
const getcost = JSON.parse(data.response.stream.toString()).cost; 当我执行这个集合时,我得到了下面的错误。检索每个数据集的成本,因为我已经为每个请求将它们记录到控制台:
jsonData.data.map((item, index) => item.cost = getcost[index]);
^
TypeError: Cannot read property '0' of undefined当我创建一个数组和硬编码值时,例如
const getcost = ['1.0','2.0','3.0','4.0','5.0','6.0','7.0','8.0','9.0']然后使用下面的代码将值写入CSV,正如我所期望的那样。
jsonData.data.map((item, index) => item.cost = getcost[index]);我已经将整个脚本包含在下面:
const { on } = require('events');
const fs = require ('fs');
const newman = require('newman');
const papa = require('papaparse');
//call newman.run to pass `options` object and wait for callback
newman.run({
collection: require('./Test1.postman_collection.json'),
reporters: 'cli',
iterationData: './costrequest_ddM.csv'
}, (error) => {
if (error) {
throw error;
}
console.log('Collection run complete');
}).on('request', (error, data) => {
if (error) {
throw error;
}
const getcost = JSON.parse(data.response.stream.toString()).cost;
//const getcost = ['1.0','2.0','3.0','4.0','5.0','6.0','7.0','8.0','9.0']
//console.log(getcost);
returnCostsToCSV(getcost);
});
function returnCostsToCSV(getcost){
fs.readFile('./costrequest_ddM.csv','utf8', (error, data) => {
if (error) {
throw error;
}
const jsonData = papa.parse(data, { header: true });
//jsonData.data[0].cost = getcost;
jsonData.data.map((item, index) => item.cost = getcost[index]);
const results = papa.unparse(jsonData.data);
fs.writeFile('./returnedcosts.csv', results, (error) => {
if (error) {
throw error;
}
});
console.log('Script complete, costs updated');
});
}发布于 2021-04-11 21:43:32
我已经解决了这个问题。我创建了一个数组,并在每次迭代中将值推入数组。
https://stackoverflow.com/questions/67044911
复制相似问题