Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将数组值附加到csv_Node.js_Json_Csv - Fatal编程技术网

Node.js 将数组值附加到csv

Node.js 将数组值附加到csv,node.js,json,csv,Node.js,Json,Csv,我想获取一些输出并将输出附加到csv 这是我目前掌握的代码: async function writeData() { const csv = require('csv-parser') const results = []; fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv') .pipe(csv()) .on('data',(data)=> resu

我想获取一些输出并将输出附加到csv

这是我目前掌握的代码:

async function writeData() {
    const csv = require('csv-parser')
    const results = [];
    fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv')
        .pipe(csv())
        .on('data',(data)=> results.push(data))
        .on('end', async () => {
            const cookieJar = await getCookieJar();
            const promises = [];
            results.forEach((data) => {
                promises.push(boxrec.getPersonById(cookieJar,data.id));
            })
            try {
                const fighters = await Promise.all(promises);
                fighters.forEach((fighter)=>{
                    boxer = JSON.parse(JSON.stringify(fighter.output));
                    fs.appendFile('C:\\Users\\User\\Documents\\newtest.csv',boxer, (err) => {
                        if (err) console.error('Could not append data to csv');
                        console.log('Data successfully appended');
                    })
                });
            } catch (e) {
                console.log(e);
            }
        })
};
try {
    writeData();
} catch (error) {
    console.log("Error in writeData: " + error);
}
但是,运行此代码不会生成所需的csv输出


我之所以特别写csv,是因为我读到我无法附加到json(理想情况下,我希望将数据写入json)

如果您没有任何内容写入csv文件,您应该在程序结束时显式关闭它:

var readsteam = fs.createReadStream();
...
readStream.destroy();
不确定,但这应该是完整的代码:

async function writeData() {
    const csv = require('csv-parser')
    const results = [];
    var readsteam = fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv');
    readsteam
        .pipe(csv())
        .on('data',(data)=> results.push(data))
        .on('end', async () => {
            const cookieJar = await getCookieJar();
            const promises = [];
            results.forEach((data) => {
                promises.push(boxrec.getPersonById(cookieJar,data.id));
            })
            try {
                const fighters = await Promise.all(promises);
                fighters.forEach((fighter)=>{
                    boxer = JSON.parse(JSON.stringify(fighter.output));
                    fs.appendFile('C:\\Users\\User\\Documents\\newtest.csv',boxer, (err) => {
                        if (err) console.error('Could not append data to csv');
                        console.log('Data successfully appended');
                    })
                });
            } catch (e) {
                console.log(e);
            }
        }
    readsteam.destroy();
};
try {
    writeData();
} catch (error) {
    console.log("Error in writeData: " + error);
}

如果没有任何内容写入CSV文件,则应在程序结束时显式关闭该文件:

var readsteam = fs.createReadStream();
...
readStream.destroy();
不确定,但这应该是完整的代码:

async function writeData() {
    const csv = require('csv-parser')
    const results = [];
    var readsteam = fs.createReadStream('C:\\Users\\User\\Documents\\testingclean.csv');
    readsteam
        .pipe(csv())
        .on('data',(data)=> results.push(data))
        .on('end', async () => {
            const cookieJar = await getCookieJar();
            const promises = [];
            results.forEach((data) => {
                promises.push(boxrec.getPersonById(cookieJar,data.id));
            })
            try {
                const fighters = await Promise.all(promises);
                fighters.forEach((fighter)=>{
                    boxer = JSON.parse(JSON.stringify(fighter.output));
                    fs.appendFile('C:\\Users\\User\\Documents\\newtest.csv',boxer, (err) => {
                        if (err) console.error('Could not append data to csv');
                        console.log('Data successfully appended');
                    })
                });
            } catch (e) {
                console.log(e);
            }
        }
    readsteam.destroy();
};
try {
    writeData();
} catch (error) {
    console.log("Error in writeData: " + error);
}

使用try-catch块捕获承诺拒绝错误。然后用特定错误更新答案。在
end
event callback.fs内创建try catch。createReadStream需要catch块。或on('error',()=>{})。看看这个@Dijkstra编辑了我的回答使用try-catch块来捕捉承诺拒绝错误。然后用特定错误更新答案。在
end
event callback.fs内创建try catch。createReadStream需要catch块。或on('error',()=>{})。请查看@Dijkstra edited my answer,如果出现在promissions.push行之后或fs.appendFile之后,应该出现在promissions.push行之后或fs.appendFile之后