【问题标题】:Converting json to csv using json2csv package asynchronously using parseAsync throws error使用 json2csv 包异步将 json 转换为 csv 使用 parseAsync 抛出错误
【发布时间】:2020-10-01 03:44:12
【问题描述】:

我正在使用 json2csv 将 json 响应转换为 csv。我需要将其用作异步。这样它就不会阻塞其他 api 调用。我尝试了以下代码,但它引发了错误。 "TypeError: parseAsync 不是函数"

const parseAsync = require("json2csv")       
    mycollection.aggregate(aggquery, function (err, jsondata) {    
       parseAsync(jsondata, opts).then(csv => console.log(csv))
         .catch(err => console.error(err));    
    });

转换 csv 后,我需要将其写入文件。

【问题讨论】:

    标签: node.js json2csv


    【解决方案1】:

    根据the json2csv docsparseAsync() 不是默认导出,而是导出的属性。换句话说,而不是这样:

    const parseAsync = require("json2csv")
    

    ...你想要这个:

    const { parseAsync } = require("json2csv")
    

    这将使您摆脱您看到的关于 parseAsync() 不是函数的错误。

    【讨论】:

      【解决方案2】:

      您应该能够使用 parseAsync,然后使用 fs.writeFile 将生成的 CSV 数据写入文件。

      const { parseAsync } = require("json2csv")
      const fs = require("fs");
      const filePath = "./csvdata.csv"; // Enter file path here...
      
      mycollection.aggregate(aggquery, async function(err, jsondata) {
          if (err) {
              console.error("mycollection.aggregate: An error occurred:", err);
              return;
          }
          try { 
              const csv = await parseAsync(jsondata, {});
              fs.writeFile(filePath, csv, { encoding: "utf-8" }, (fileErr) => { 
                  if (fileErr) {
                      console.error("mycollection.aggregate: Error writing CSV to file:", fileErr);
                  }
              })
          } catch (err) {
              console.error("mycollection.aggregate: parseAsync: An error occurred:", err);
          }
      });
      

      【讨论】:

      • 因为它是 async -await 。它会阻塞我的其他 api 调用。
      • 它不会阻塞调用,聚合函数不会等待回调完成。您可以进行一些测试以确保是这种情况,但我可以向您保证它不会阻止呼叫。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 2018-01-04
      相关资源
      最近更新 更多