2017-01-19 3 views
-1

Ich versuche, eine TXT-Datei mit Fs auf Nodejs zu schreiben, aber ich bekomme den folgenden Fehler.Ich kann nicht eine TXT-Datei mit fs auf Nodejs schreiben, kann jemand mir helfen?

call_and_retry_last Zuordnung fehlgeschlagen - Prozess aus dem Speicher

Dies ist der Code ich verwende:

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 ist ein Aufruf einer mongolab Datenbank mit Mungo

+0

'fs.appendFile' ist' async'. –

Antwort

0

Sie kann async zum Anhängen Zeile für Zeile.

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

Sie sollten niemals Array.forEach Funktion für große Daten verwenden. Auch die forEach-Funktion blockiert den Code und funktioniert in den meisten Fällen nicht wie erwartet mit dem Knoten, der stark auf nicht blockierendem Code (asynchronem Code) basiert.

Sie könnten stattdessen 'async' Bibliothek versuchen, die wirklich nützliche Funktionen für die asynchrone Javascript-Programmierung hat.

Für diesen Fall verwenden Sie die Async.Each Funktion in einer Weise, wie folgt aus:

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

Für Ihr spezielles Problem:

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 
    }); 


}); 
Verwandte Themen