【问题标题】:'pipe' function in Javascript not populating from CSV as expectedJavascript 中的“管道”函数未按预期从 CSV 填充
【发布时间】:2019-11-12 15:02:28
【问题描述】:

我之前有此代码工作,但做了一些更改,我不确定我做了什么来破坏它。 .csv文件的路径正确,代码看起来也正确,但函数调用后数组raw_data为空。


require('./trip.js');
const parser = require('csv-parser');
const fs = require('fs');
let raw_data = [];

function readFile() {
    fs.createReadStream('./trips.csv')
        .pipe(parser())
        .on('data', (data) => raw_data.push(data))
        .on('end', () => console.log('CSV has been piped into an array'));
}

const trips = async () => {
   await readFile();
   console.log(raw_data.length)
};

我希望 raw_data 数组包含 9999 个项目。它包含零。我也没有让 console.log 语句在“结束”时执行。

【问题讨论】:

  • 你只能等待承诺。

标签: javascript node.js csv parsing


【解决方案1】:

readFile 必须像这样返回 Promise

require('./trip.js');
const parser = require('csv-parser');
const fs = require('fs');
let raw_data = [];

function readFile() {
    return new Promise(resolve =>
      fs.createReadStream('./trips.csv')
        .pipe(parser())
        .on('data', (data) => raw_data.push(data))
        .on('end', resolve)
    );
}

const trips = async () => {
   await readFile();
   console.log(raw_data.length)
};

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多