首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Newman -将字符串元素添加到数组中,以便在每次数据迭代时打印到CSV

Newman -将字符串元素添加到数组中,以便在每次数据迭代时打印到CSV
EN

Stack Overflow用户
提问于 2021-04-11 20:20:53
回答 1查看 33关注 0票数 0

提前感谢您的帮助/支持。

我正在使用Newman作为一个库来运行一个集合,其中包含一个包含多个数据集的CSV文件。

我正在尝试使用从每个数据集的API响应中检索到的参数值来更新CSV文件的副本。

我坚持输出为数据表中每一行的每个响应检索到的“成本”值。

我想我知道问题出在哪里了,我需要向数组中添加'getcost‘。此行在运行时检索成本。

代码语言:javascript
复制
const getcost = JSON.parse(data.response.stream.toString()).cost; 

当我执行这个集合时,我得到了下面的错误。检索每个数据集的成本,因为我已经为每个请求将它们记录到控制台:

代码语言:javascript
复制
 jsonData.data.map((item, index) => item.cost = getcost[index]);
                                                       ^       
TypeError: Cannot read property '0' of undefined

当我创建一个数组和硬编码值时,例如

代码语言:javascript
复制
const getcost = ['1.0','2.0','3.0','4.0','5.0','6.0','7.0','8.0','9.0']

然后使用下面的代码将值写入CSV,正如我所期望的那样。

代码语言:javascript
复制
jsonData.data.map((item, index) => item.cost = getcost[index]);

我已经将整个脚本包含在下面:

代码语言:javascript
复制
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');
    });
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-11 21:43:32

我已经解决了这个问题。我创建了一个数组,并在每次迭代中将值推入数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67044911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档