0

我正在使用 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 后,我需要将其写入文件中。

4

2 回答 2

0

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

const parseAsync = require("json2csv")

...你要这个:

const { parseAsync } = require("json2csv")

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

于 2020-10-01T03:48:03.973 回答
0

您应该能够使用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);
    }
});
于 2020-10-01T07:45:38.557 回答