2017-01-19 11 views
-1

私はNodejsでFsを使ってtxtファイルを書き込もうとしていますが、次のエラーが発生します。Im Nodejsでfsを使用してtxtファイルを書き込めません。

call_and_retry_last割り当てに失敗しました - プロセスがメモリ不足

をこれは私が使用していたコードです:

UserPayment.find({} ,function (error , usersdata){ 
    count=usersdata.length; 
    usersdata.forEach(function(user){ 
    sum+=user.Amount; 
    fs.appendFile('unapec-appap.txt', 'D'+padding(user.Id,13)+user.IdType+padding(user.Account,15)+padding(user.Amount,20),function (err) { 
     console.log(err); 
    }); 
    }); 
    callback(); 
}); 

UserPaymentあなたはマングース

+0

'fs.appendFile'は' async'です。 –

答えて

0

を使用してmongolabデータベースへの呼び出しです行ごとに追加する場合はasyncとなります。

var async = require("async"); 

UserPayment.find({} ,function (error , usersdata){ 
    count=usersdata.length; 
    async.each(usersdata, function(user, cb){ 
    sum+=user.Amount; 

    fs.appendFile('unapec-appap.txt', 'D'+padding(user.Id,13)+user.IdType+padding(user.Account,15) + padding(user.Amount,20), function (err) { 
     cb(); 
    }); 
    }, function(err){ 
    callback(); 
    }) 
}); 
0

大きなデータにはArray.forEach関数を使用しないでください。またforEach関数はコードをブロックし、ノンブロッキングコード(非同期コード)に大きく依存するノードでは、ほとんどの場合期待どおりに動作しません。

代わりに、非同期javascriptプログラミングに本当に便利な機能を持つ 'async'ライブラリを試すことができます。この場合の

、このような方法でAsync.Each機能を使用します。

async.each(arrayofusers, appendfilesfunction, function(err){ 
    // if any of the saves produced an error, err would equal that error 
}); 

あなたの特定の問題について:

var async = require('async'); 

UserPayment.find({} ,function (error , usersdata){ 
    count=usersdata.length; 

    async.each(userdata, function(user,next){ 
     sum+=user.Amount; 
     fs.appendFile('unapec-appap.txt', 'D'+padding(user.Id,13)+user.IdType+padding(user.Account,15)+padding(user.Amount,20) 
         ,function (err) { 
          if(err) return next(err); 
          next(); 
     }); 
    }, function(err){ 
     if(err) console.log(err); // All errors will be handled here 
    }); 


}); 
関連する問題