首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在Nodejs中使用fast-csv返回2D-array,但未返回

尝试在Nodejs中使用fast-csv返回2D-array,但未返回
EN

Stack Overflow用户
提问于 2020-06-28 21:58:29
回答 1查看 263关注 0票数 1

我正在尝试使用fast-csv库解析csv文件,并将每个值、数字或字符串转换为创建2d数组。但是我不能在ReadStream中返回数组。你能给我关于我的代码的建议吗?

代码语言:javascript
复制
const fs = require("fs");
const csv = require("fast-csv");

async csvParse(){

  let array = [];
  
  options = {
    map(value){
      // convert value's column type to number or string
    }
  }

  fs.createReadStream(csvfile)
      .pipe(csv.parse(options))
      .on("error", error => console.log(error))
      .on("data", data => array.push(data))
      .on("end", function(){
         console.log(array);
         return array;
      })
}

输入

代码语言:javascript
复制
name,date,score,id
John,2020-01-01,1000,10

预期-输出

代码语言:javascript
复制
[["name", "date", "score", "id"], ["John", "2020-01-01", 1000, 10]]

实际输出

代码语言:javascript
复制
// no output

我希望代码返回从"input“转换而来的”expect -output“,但它没有返回任何结果。我知道这是因为我试图从()上的匿名函数返回一个值,但是我不知道正确的方法。

EN

回答 1

Stack Overflow用户

发布于 2020-06-28 23:36:12

您可以将文件流的处理和csv转换封装在promise中,并在发出end-event后解析promise:

代码语言:javascript
复制
const fs = require("fs");
const csv = require("fast-csv");

function csvParse() {

    const options = {
        // your options here
    }
    let array = [];
    return new Promise((resolve, reject) => {
        fs.createReadStream(csvfile)
        .pipe(csv.parse(options))
        .on("error", error => reject(error))
        .on("data", data => array.push(data))
        .on("end", () => {
            console.log(array);
            resolve(array);
        });
    });

}

然后这样叫它:

代码语言:javascript
复制
(async() => {
    const result = await csvParse();
})();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62623542

复制
相关文章

相似问题

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