Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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
Javascript 在filestream和cvparser上解析数据时出现问题_Javascript_Arrays_Performance_Constants - Fatal编程技术网

Javascript 在filestream和cvparser上解析数据时出现问题

Javascript 在filestream和cvparser上解析数据时出现问题,javascript,arrays,performance,constants,Javascript,Arrays,Performance,Constants,我在与同事一起开发的项目中阅读这段代码时遇到问题。如果你能帮我,告诉我那段代码的意思,我将不胜感激。在那篇文章中,我得到了technologies.csv文件,我们需要解析它,如果有错误,我们必须对此错误抛出异常。代码的末尾有一些卡片,但我不知道这张卡片是什么意思。在最后我们必须导出带有数据的模块,我认为数据是来自const和编程语言。如果有人能详细解释它,那就太完美了。提前感谢!:) const fs = require('fs'); const parse = require('csv-pa

我在与同事一起开发的项目中阅读这段代码时遇到问题。如果你能帮我,告诉我那段代码的意思,我将不胜感激。在那篇文章中,我得到了technologies.csv文件,我们需要解析它,如果有错误,我们必须对此错误抛出异常。代码的末尾有一些卡片,但我不知道这张卡片是什么意思。在最后我们必须导出带有数据的模块,我认为数据是来自const和编程语言。如果有人能详细解释它,那就太完美了。提前感谢!:)

const fs = require('fs');
const parse = require('csv-parse');
const path = require('path');

const constants = {
    testData: {
        csvColumns: [
            'ruby',
            'python',
            'vuejs',
            'angular',
            'react',
            'nodejs',
        ],
    },
};

const configFileLocation = (name) => {
    return
    {
      filename: path.join(__dirname, `${name}technologies.csv`)
    }
}

const getData = (name) =>
    new Promise((resolve, reject) => {
        const fileLocation = configFileLocation(name).filename;

        const csvParser = parse({
            delimiter: ',',
        });

        if (!fs.existsSync(fileLocation)) {
            reject(new Error(`File ${fileLocation} is missing.`));
        }

        const csvFileStream = fs.createReadStream(fileLocation);

        csvFileStream.on('ready', () => {
            csvFileStream.pipe(csvParser);
        });

        csvFileStream.on('error', (error) => {
            reject(
                new Error({
                    error,
                    message: 'csvParseCards#csvFileStream on error',
                })
            );
        });

        csvParser.on('error', (error) => {
            reject(
                new Error({
                    error,
                    message: 'csvParseCards#csvParser on error',
                })
            );
        });

        const cards = [];

        csvParser.on('readable', () => {
            let record = '';

            while ((record = csvParser.read())) {
                const card = {};

                const columns = constants.testData.csvColumns;

                if (record.length !== columns.length) {
                    console.warn('Column mismatch', record);
                }

                record.map((value, index) => {
                    card[columns[index]] = value;
                });

                cards.push(card);
            }
        });

        csvParser.on('end', () => {
            cards.shift();

            resolve(cards);
        });
    });

module.exports = getData;