Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
365 views
in Technique[技术] by (71.8m points)

node.js - Export csv file using Azure functions nodejs

I am trying to export a csv file (pulling the data from mongodb). My frontend is ionic (angular) and backend is Azure function (nodejs), I want the frontend to be able to download this csv file.

My code:

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

The above creates a csv file but its not downloaded by the frontend.

question from:https://stackoverflow.com/questions/65644146/export-csv-file-using-azure-functions-nodejs

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Firstly, add

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

On Frontend in your service create a download method that requests the file on user click;

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

check if this works!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...