2015-01-13 70 views
0

我想在MEAN堆棧中以csv格式導出數據收集。從nodejs中的mongodb導出爲CSV

這是我csv.server.controller功能:

function(err, source) { 
     var result = []; 
     //res.setHeader('content-type', 'text/csv'); 

     res.setHeader('content-disposition', 'attachment; filename=user.csv'); 

     csv() 
      .from(source,{delimiter:'|'}) 
      .on('data', function(data){ 
       result.push(data); 
      }) 
      .on('end', function(){ 
       res.send(result); 
      }); 
    }); 

在angularjs控制器我打電話:

$scope.csv = function() { 
        $http.get('/download'). success(function(data, status, headers,config) { 
         var element = angular.element('<a/>'); 

         element.attr({ 
          href: 'data:text/csv;charset=utf-8,' + encodeURI(data), 
          target: '_blank', 
          download: 'users.csv' 
         })[0].click(); 

        }). 
         error(function(data, status, headers, config) { 
          console.log(data); 
         }); 
       }; 
      }); 

其路由到:

app.route('/download').get(csv.download); 

這整個結構對於約700行/集合正常工作。但更多的是,我得到了瀏覽器內存不足的錯誤。

任何人都可以請幫我理解這個問題。我在想我正在將源文件全部寫入csv格式。我怎樣才能避免內存異常?

回答

0

Use this for CSV

第1步:安裝NPM CSV

var csv = require('csv'); 

csv.generate({seed: 1, columns: 2, length: 20}, function(err, data){ 
csv.parse(data, function(err, data){ 
csv.transform(data, function(data){ 
    return data.map(function(value){return value.toUpperCase()}); 
}, function(err, data){ 
    csv.stringify(data, function(err, data){ 
    process.stdout.write(data); 
      }); 
     }); 
    }); 
}); 
+0

所以我需要改變CSV版本?是不可能使用相同的版本 – dreamhigh

+0

處理這個問題的簡單方法: 形式數組類似於: - [[a,1],[b,2],[c,3],[d, 4],[e,5]] 使用侵略 –