首页 > 解决方案 > 使用 Azure 函数 nodejs 导出 csv 文件

问题描述

我正在尝试导出一个 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.jsangularmongodbazure-functionsfast-csv

解决方案


首先,添加

 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));
   });

检查这是否有效!


推荐阅读