私のコードはループの外側で正常に動作します:
var localFolder = '/home/transcripts',
apiHost = 'https://someserver'
apiCall = '/path',
sharedSecret = 'secret';
/* includes */
var sys = require('sys'),
fs = require('fs'),
exec = require('child_process').exec,
querystring = require('querystring'),
crypto = require('crypto')
request = require('request');
var file = "index_07_03_2013_1209576.csv";
console.log('Pushing CSV to API: ' + file);
var r = request.post(
apiHost + '/' + apiCall,
{ form: {
'filename': file,
'accessToken': crypto.createHash('md5').update(file + sharedSecret).digest('hex')
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
console.log(error);
console.log(response);
}
);
file = "index_07_02_2013_1548773.csv";
console.log('Pushing CSV to API: ' + file);
var r = request.post(
apiHost + '/' + apiCall,
{ form: {
'filename': file,
'accessToken': crypto.createHash('md5').update(file + sharedSecret).digest('hex')
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
console.log(error);
console.log(response);
}
);
file = "index_07_02_2013_1548773.csv";
console.log('Pushing CSV to API: ' + file);
var r = request.post(
apiHost + '/' + apiCall,
{ form: {
'filename': file,
'accessToken': crypto.createHash('md5').update(file + sharedSecret).digest('hex')
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
console.log(error);
console.log(response);
}
);
ただし、forEach ループに移動しようとすると、サーバーが要求を受信しません。CSV ファイルが API にプッシュされていることを示す出力が表示されますが、リクエストがサーバーに到達していないようです。そのためのコードは次のとおりです。
#!/usr/local/bin/node
/* environment vars */
var localFolder = '/home/transcripts',
apiHost = 'https://someserver'
apiCall = '/path',
sharedSecret = 'secret';
/* includes */
var sys = require('sys'),
fs = require('fs'),
exec = require('child_process').exec,
querystring = require('querystring'),
crypto = require('crypto')
request = require('request');
var counter = 0;
fs.readdir(localFolder, function(err, files) {
files.forEach(function(file) {
if (file.substr(-3, 3) == 'csv') {
console.log('Pushing CSV to API: ' + file);
request.post(
apiHost + '/' + apiCall,
{ form: {
'filename': file,
'accessToken': crypto.createHash('md5').update(file + sharedSecret).digest('hex')
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
console.log(error);
console.log(response);
}
);
console.log(request);
}
counter++;
});
if (counter >= files.length) {
process.exit(0);
}
});
問題が何であるか誰にも考えがありますか?