首页 > 解决方案 > 如何使用 node.js 和 react.js 下载大型 CSV 文件

问题描述

我想通过 node.js 以 CSV 格式下载 Mongo 集合(有大量记录)。

目前我所做的是,我首先将数据加载到节点中,然后在处理它们之后解决承诺。对于小型收藏,这很好用。但是当记录数越来越多时,它会在很长一段时间后返回 502 错误。做这个的最好方式是什么?

标签: node.jsreactjsmongodb

解决方案


这是一个基本的代码spinet,它帮助我解决了上述问题。

    const collection = ... ;
    const query = ... ;
    const select = ... ;

    const cursor = mongodb.collection(collection).find(query, select)

    var csv = require('csv');

    transfer(doc) {
    return {
        Address: doc.address,
        State: doc.state.abbreviation
    };
    }

    function(req, resp) {
    const cursor = ...
    // The transfer function (above)
    const transfer = ...;

    const fileName = "Download.csv";

    resp.setHeader('Content-disposition', `attachment; fileame=${fileName}`);
    resp.writeHead(200, { 'Content-Type': 'text/csv' });

    resp.flushHeaders();

    // Stream the query result 
    cursor.stream()
        .pipe(csv.transfer(transformer))
        .pipe(csv.stringify({header: true}))
        .pipe(resp)
}

推荐阅读