0

我正在尝试导出一个 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 文件,但它没有被前端下载。

4

1 回答 1

0

首先,添加

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

检查这是否有效!

于 2021-01-09T16:26:09.633 回答