Javascript 将大量数据写入节点中的文件

Javascript 将大量数据写入节点中的文件,javascript,node.js,logging,stream,buffer,Javascript,Node.js,Logging,Stream,Buffer,将大约400MB的数据写入文件时,节点崩溃 这是我的代码: function logIntoFile (logObject){ let date = new Date(); let currentDate = date.getFullYear() + '-' + (((date.getMonth() + 1) < 10) ? '0' : '') + (date.getMonth() + 1) + '-' + ((date.getDate() < 10) ? '0' : '')

将大约400MB的数据写入文件时,节点崩溃

这是我的代码:

function logIntoFile (logObject){
  let date = new Date();
  let currentDate = date.getFullYear() + '-' + (((date.getMonth() + 1) < 10) ? '0' : '') + (date.getMonth() + 1) + '-' + ((date.getDate() < 10) ? '0' : '') + date.getDate();
  let currentHour = ( (date.getHours() < 10 ? '0' : '') + date.getHours() );

  let fileName = '/custom-logs/resultSet_' + currentDate + '_' + currentHour + '@' + logObject.dbName;
  let logFile = fs.createWriteStream(__dirname + fileName, { flags: 'a' });

  logFile.write(util.inspect(logObject, false, null) + '\n');
  logFile.end();
}

// doQuery contains logic to connect to DB and run the query provided
doQuery(req, res, sql, false, function(err, result){
   if (err) {
      ...
      console.error(err);
      res.send(err);
   } else {
      ...
      res.send(result);
      ...
      logIntoFile({
         timeStamp : getCurrentDateTime(),
         dbName    : req.session.iss.dbname,
         userId    : inuserid,
         sql       : sql,
         error     : err,
         response  : result
      });
});
函数登录文件(logObject){
让日期=新日期();
让currentDate=date.getFullYear()+'-'+((date.getMonth()+1)<10)?“0”:“”+(date.getMonth()+1)+'-'+((date.getDate()<10)?“0':”)+date.getDate();
让currentHour=((date.getHours()<10?'0':'')+date.getHours());
让fileName='/custom logs/resultSet_'+currentDate+'.'+currentHour+'@'+logObject.dbName;
让logFile=fs.createWriteStream(uu dirname+fileName,{flags:'a'});
logFile.write(util.inspect(logObject,false,null)+'\n');
logFile.end();
}
//doQuery包含连接到DB并运行提供的查询的逻辑
doQuery(请求、恢复、sql、错误、函数(错误、结果){
如果(错误){
...
控制台错误(err);
res.send(err);
}否则{
...
res.send(结果);
...
登录文件({
时间戳:getCurrentDateTime(),
dbName:req.session.iss.dbName,
用户ID:inuserid,
sql:sql,
错误:呃,
答复:结果
});
});
logObject变量是从其他函数传递的对象,它包含json数据

错误如下:

如果可写数据较小,则可以正常工作

另外,我的服务器有4GB内存

如何解决这个问题?任何帮助都将不胜感激


TIA

logObject
来自何处。可以从源代码创建
readStream()
并使用
pipe()
写入可写流。您不应该在nodejsI中处理内存中的400mb文件。创建logObject,它包括从db获取的数据和一些其他细节,如用于调用db函数的参数和时间戳。我如何创建一个创建流并在当前情况下对其进行管道处理?您使用的是什么db。Mongodb?并进行更新带有此
logObject
代码的问题如何从db中获取?我正在使用postgres db,并通过node pg package与之连接。@AmbianBeen我已用logObject的详细信息更新了问题,请查看。。