【发布时间】:2019-06-28 22:32:10
【问题描述】:
要下载为 csv 文件,我不知道是什么问题,当用户有 40,000 条记录时,它工作正常,当我试图点击 api(80,000 条记录)时,它的显示过程内存不足。请帮我解决这个问题
app.get('/excelData', function (req, result) {
var fields = ['firstName','lastName','catalina_cardStatus','deviceType','appVerison','phoneNumber','emailAddress','language','state','lastLogin','dateOfBirth']
var data = [];
var status = true;
User.find({accountType:'user',isDeleted: {$ne:{status}}}).sort({created: -1}).exec((err, res) => {
var resultData = [];
var len = res.length;
res.map((user,key) =>{
var resData = {};
if(user) {
resData.firstName = user.firstName;
resData.lastName = user.lastName;
resData.catalina_cardStatus = user.catalina_cardStatus;
resData.language = user.language;
resData.phoneNumber = user.phoneNumber;
resData.deviceType = user.deviceType;
resData.appVerison = user.appVerison;
resData.emailAddress = user.emailAddress;
resData.state = user.state;
resData.dateOfBirth = user.dateOfBirth;
if(user.lastLogin){
var date = new Date(user.lastLogin);
var utcDate = new Date(date.toISOString());
var utc = utcDate.setHours(utcDate.getHours()-8);
var usDate = utc;
var time = moment(utc).format("DD-MM-YYYY");
resData.lastLogin = time;
}
}
resultData.push(resData);
len--;
if(len==0){
var csv = json2csv({ data:resultData , fields: fields });
fs.writeFile('path', csv, function(err,data) {
setTimeout(function () {
fs.unlinkSync('path'.csv');
}, 30000);
result.send({msg: "saved sucessfully",path :'path.csv'});
if (err)
{
throw err;
console.log("Error: "+err);
}
})
}
})
})
});
【问题讨论】:
标签: javascript node.js mongodb forever