Javascript 我无法在Nodejs上使用fs编写txt文件,有人能帮我吗?
我试图在Nodejs上使用Fs编写一个txt文件,但是我得到了以下错误 调用和重试上次分配失败-进程内存不足 这是我正在使用的代码:Javascript 我无法在Nodejs上使用fs编写txt文件,有人能帮我吗?,javascript,node.js,mongodb,asynchronous,mongoose,Javascript,Node.js,Mongodb,Asynchronous,Mongoose,我试图在Nodejs上使用Fs编写一个txt文件,但是我得到了以下错误 调用和重试上次分配失败-进程内存不足 这是我正在使用的代码: UserPayment.find({} ,function (error , usersdata){ count=usersdata.length; usersdata.forEach(function(user){ sum+=user.Amount; fs.appendFile('unapec-appap.txt', 'D'+padd
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是使用mongoose对mongolab数据库的调用您可以
异步
逐行追加
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();
})
});
对于大数据,绝不应使用Array.forEach函数。另外,forEach函数会阻塞代码,并且在大多数情况下,它不会像预期的那样使用node,node主要基于非阻塞代码(异步代码) 您可以改为尝试“async”库,该库具有用于异步javascript编程的真正有用的函数 对于这种情况,请按如下方式使用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
});
});
fs.appendFile
是async
。