【问题标题】:Export csv file using Azure functions nodejs使用 Azure 函数 nodejs 导出 csv 文件
【发布时间】:2021-01-09 15:05:55
【问题描述】:

我正在尝试导出 csv 文件(从 mongodb 中提取数据)。我的前端是 ionic(角度),后端是 Azure 函数(nodejs),我希望前端能够下载这个 csv 文件。

我的代码:

const { db, connection } = await createMongoClient();
const collection = db.collection("dummy");

try {
    const data = await collection.find({}).toArray();
    connection.close();

    const ws = fs.createWriteStream(Date.now() + ".csv");

    fastcsv
        .write(data, { headers: true })
        .on("finish", function () {
        console.log("Write CSV successfully!");
        })
        .pipe(ws);

    res.status(201).json({ success: true });
} catch (err) {
    res.status(500).json({ err, success: false });
}

上面创建了一个 csv 文件,但它没有被前端下载。

【问题讨论】:

    标签: node.js angular mongodb azure-functions fast-csv


    【解决方案1】:

    首先,添加

     res.status(201).json({ success: true }); --- remove this line
     res.status(200).send(file being created as csv);
    

    在您服务的前端创建一个下载方法,在用户点击时请求文件;

    this.http.get('REST end point', { responseType: 'blob'}).subscribe(res => {
         window.open(window.URL.createObjectURL(res));
       });
    

    检查这是否有效!

    【讨论】:

    • 我试过这个res.send(ws);,但我没有得到 csv 文件只有文本,这不是 csv 数据
    • 你可以使用 express-csv 模块。它可以帮助您以 csv 形式发送响应,或者您可以从后端获取 JSON 数据到前端(如果您的数据不是很大),并使用 JSON-to-CSV 模块,我附上了一个链接 - medium.com/mycoding/… .它可以帮助您实现如何使用它。
    猜你喜欢
    • 2021-02-13
    • 2021-12-26
    • 2019-02-13
    • 2014-03-19
    • 2017-04-04
    • 2020-01-11
    • 2021-12-31
    • 2021-12-30
    • 1970-01-01
    相关资源
    最近更新 更多